Changed
smos-scheduler
: Fixed that the activated timestamp was unnecessarily precise.- All binaries: Improved shell tab-completions.
- All binaries:
man
page support. smos-server
and `smos-web-server: Made the booking mechanism more pessimistic.
A comprehensive self-management system
The changelog for all releases of all of the Smos tools and libraries
smos-scheduler
: Fixed that the activated timestamp was unnecessarily precise.man
page support.smos-server
and `smos-web-server: Made the booking mechanism more pessimistic.smos-scheduler
: Fixed that late-schedulings would be scheduled with the wrong time.smos-scheduler
: Use a unique name instead of hash so that schedules no longer need to be rescheduled when they are changed.smos-scheduler
: Redesigned the way schedules are configured to require a name.
This is a breaking change and will require a (very mechanical) change to your configuration.smos-web-server
: Fixed some inconsistenciessmos-archive
parsed the directory as an option instead of an argument.smos-github import
parsed the url as an option instead of an argument.smos-sync-client
to smos-sync
.smos-server
's database.opt-env-conf
Some settings may have changed so make sure to re-check the documentation if anything has broken.
This should help with readability of all the settings, as well as improve the documentation.READY
timestamps with a later-than-now AFTER
timestamp would still show up in the work report.nixos-module
: Changed openFirewall
s default to false
.smos-calendar-import
: Retry requests to sources when they get 4XX responses as well, instead of only when the request fails entirely.home-manager-module
: Allow configuring every timer's frequency.smos-web-server
: Mention bookings on the front page.smos
: Experimental windows supportsmos
: Split out a smos-e2e
package so the smos executable can be built on Windowssmos-server
: Fixed a bug with bookings (and backups) crashing when done concurrently with another database operation.smos-data
: Made all smos file records strict. This might speed up some reports.smos-scheduler
: Use SHA256 for the schedule hash so that an upgrade of the hashable
library cannot suddenly rerun all schedules.smos
and smos-scheduler
: Made the fuzzy time parser smarter, it now also accepts:
smos-sync-client
: Made the client less chatty and more informative.openFirewall
setting to close the firewall. This setting will become false
by default in a future release.smos
and smos-query
: Consider the END
timestamp exclusive for the purpose of the ongoing report.smos-data
: Documented the meaning of common timestamp names.smos-calendar-import
: Improved the ICAL parsing so that invalidly TEXT
-encoded URL
properties can still be parsed.smos
: Replace [+]
by [unsaved changes]
.smos
: Added style (colour) to the editor header text.smos-calendar-import
: Retry http requests.smos-web-server
: Fixed that the web ui did not resize upon the first load.smos
: pp
for setting the phone_number
property.smos-jobhunt
: Made the waiting threshold configurable.smos-calendar-import
: Now records whether you should be considered busy during an event in the busy
property.smos-query
: The free
command: For showing when you may be available.smos-query
: The tags
command got a --show-archive
flag.smos
: The AFTER
timestamp:
Don't show next actions if now is before the AFTER
timestamp.
Don't show deadlines if now is before the AFTER
timestamp.smos-server
: Booking API: Users can now activate booking and be booked.smos-web-server
: Booking UI: Users can now activate booking and be booked.smos-api
and smos-client
: An endpoint for deleting smos files.smos-query
: The ongoing
command: For showing entries that are happening now.smos-jobhunt
: Fix that the url wasn't being filled in.smos
: Fixed that the email
property was not coloured.smos-jobhunt
: Fixed that the sender didn't receive a copy of the email.smos-jobhunt
: Made the default waiting threshold 3 weeks.smos-query
: The tags
command now hides the archive by default.smos-query
: Sped up the work report generation slightly by using difference lists.smos-calendar-import
: Updated the ical
depnedency.
This should speed up parsing of large calendars.
It should also allow importing from ICloud where previously that was not
possible because ICloud outputs invalid iCalendar files.smos-query
: Don't consider entries with the property busy: false
in the "next begin" part of the work report.smos-api
: Bumped the API version to 0.4
with the addition of the booking API endpoints.nixos-23.05
.smos-web-server
: Empty directories are now deleted in the web editor.smos-notify
: The notification now shows the filename of the entry that the notification is about.smos
: Fixed a bug where the cursor would sometimes become invisible in the work report.smos-query
: Added an ongoing
section to the work report.smos
: Added an ongoing
section to the interactive work report.smos
and smos-query
: Fixed a bug that caused files in the top-level of the archive directory to still show up in reports that were meant to hide the archive.smos-jobhunt
: A new tool to help with application processes.smos-cli
: A library for making smos CLIs.smos-directory
and smos-directory-gen
: Libraries for all the configuration related to smos directories.smos-github
:
Fixed that the smos-github
config was not included in the config file
generated in the home manager module.smos-calendar-import
:
Refactored most of the smos-calendar-import
logic into a separate ical
library.
This means that:
.ics
files.
Indeed, Google, Apple, and Microsoft all sometimes spit out invalid .ics
files.smos-report
: Sped up timestamp calculations by computing an Interval
from a Period
ahead of time.smos-query
:
Refactored smos-report's handling of periods so that it no longer calculates
periods at the end or beginning of a year incorrectly.smos-query
:
Fixed that smos-report would get timezone information wrong about timestamps
in the same timezone but in summer time (in winter) or vice versa.smos-query
: Support for the following time periods:
smos-scheduler
: Fixed a bug in which relative timestamps would be scheduled
relative to the current UTC time instead of the current local time.smos-scheduler
: Fixed a bug in which items scheduled into the future would
have future timestamps in their entries' todo state history and could
therefore not have their todo state changed until then.smos-scheduler
: Changed that scheduling rent-recurrence would happen in UTC
time instead of in local time.--help
text to always show global options, even when a command has already been supplied.smos-archive
: Changed the default log level from Warn
to Info
.smos-server
: Changed the default log level from Warn
to Info
.smos-sync-client
: Changed the default log level from Warn
to Info
.smos-web-server
: Renamed --web-port
to --port
.smos-single
: No longer parses directory settings that it doesn't use.smos
: Upgraded to brick-1.6
, which should come with significant performance improvements.This release only contained nix infrastructure changes.
Home manager module:
programs.smos.notify.enable
is true
.programs.smos.scheduler.enable
is true
.programs.smos.github.enable
is true
.programs.smos.sync.enable
is true
.smos-calendar-import
:
Allow sources to be passed in as a file so that this sensitive information
does not have to be in the config file.
smos-calendar-import
: Allow an empty list of sources to be configured.
smos-sync-client
:
Allow the password to be passed in as a file so that this sensitive
information does not have to be in the config file.
smos-github
:
Allow the oauth token to be passed in as a file so that this sensitive
information does not have to be in the config file.
smos-scheduler
:
When a rent recurrence schedule is activated the first time, it is activated
as if the current time is the time it would have been activated next.
Home manager module: The workflowDir
option is now put into the smos config
file, instead of only used for the backup script.
smos-server
:
Use the default compression level (3) for compressing backups instead of the
maximum level (24).
smos
:
Fixed a bug in which the directory could not be switched if the target had
the same contents (empty) as the currently selected directory.
smos-query
, smos-scheduler
and smos-notify
during activation.vim
or emacs
to edit the contents of an entry.lts-19.6
and nixpkgs branch nixos-22.05
smos-scheduler
: Allow the schedule template to be specified as an absolute path as well.smos-query
: Fixed that the agenda entries in smos-query had incorrect
pretty relative days for timestamps with a day-level granularity.smos-query
: Improved metavars for optparse documentation.smos-web-server
: Change the TUIR
and TUIInstanceR
routes to not accept any path.smos-web-server
: Use playground.smos
in the playground instead of example.smos
.smos-web-server
: Open the editor in the workflow directory by default, instead of example.smos
.smos-scheduler
: Support for haircut recurrencesmos-scheduler
overhaul:
smos-scheduler
tool is now stateless.
It now uses the workflow directory to compute 'last run's instead of a state file.next
command is now colourful.smos-query
: Show relative time in agenda and work reports in days instead of times for timestamps with a day resolution.smos
: Don't show the time of day as 00:00
for timestamps with a day resolution.nixos-22.05
.smos-convert-org
: It was wrong in multiple ways and was not being used.The local backup now uses shell-scripting-friendlier filenames.
For example; 2022-06-05_224543
instead of 2022-06-05_22:45:43
.
Fixed a bug where the projects report reported done entries as the current entry. Thank you @CSVdB!
smos-server
: Removed the "backup interval" feature.
Backups are now made every time the backup looper runs, instead of only if the "backup interval" has expired.
This means that the backup looper's period has effectively become the backup interval.smos-server
: Removed the server "max backups per user" feature.
The maximum number of backups per user per period is now the default way to configure backup deletion.
Configuring the maximum number of backups per user over all periods is no longer possible.smos-server
: Keep more backups: 4 in the last day and every hour in the last 4 hours as well.smos-report
: "By header", "By state" and "By timestamp" sorters.smos-github
: An "import" command for importing github issues and pull requests into a smos project.smos
and smos-query
: The work report now warns against projects without a next state.smos-calendar-import
: Import sources in parallel, instead of one by one.
smos-calendar-import
: Render the event UID
as a property and the original event in contents when --debug
is used.
smos
: When opening a file, the uncollapse rule has been changed to skip over entries without a state.
Before:
Top
DONE something done
❯ some info with no state
NEXT thing to do
After:
Top
DONE something done
some info with no state
❯ NEXT thing to do
smos
: Contents with carriage return or tab characters can now be shown in smos correctly.
smos-report
: Fixed a bug where some filters could not be parsed because they contained substrings "or"
or "and"
.
Home manager module: Fixed the naming of systemd services to be prefixed by smos-
for easier tab-completion.
smos-data
: Simplified time-related data parsing.
smos-data
: Fixed a bug where sometimes todo state histories where not considered valid when they should be.
smos-data
: Upgraded to data format 2.0.0
, which allows timestamps to be less precise.
smos-scheduler
: Use atomic durable writes for the state, so that the state never gets lost when something goes wrong during a write.
smos-sync-client
: Use atomic durable writes for the login session, so that the session never gets lost when something goes wrong during a write.
smos-archive
: Don't mark entries without a state as cancelled while archiving
lts-18.16
and the nixos-21.11
branch of nixpkgs
.smos-server
: Simplified to be single-command, so that you don't have to use serve
anymore.smos-web-server
: Simplified to be single-command, so that you don't have to use serve
anymore.smos-notify
: Fixed a bug where smos-notify
would fail to send a notification when the notification summary or description started with a -
character.smos-data
: Forward-compatibility with data format version 2.0.0.smos-data
: Clearer data formats with more comprehensive naming.smos-api
: Upgrade to version 0.3.0
with shorter names for username
and password
in the API.smos-server
: Changed the backup garbage collector to be smarter. It can now save one backup a day for the last 7 days, one backup a week for the last 8 weeks, and 1 backup a month for the last year.smos
: convResponded
, which is like convRespondedButStillWaiting
but does not duplicate the original entry and is bounded to <space>rs
by default.smos-calendar-import
: You can now ignore calendar events by adding SMOS_NO_CALENDAR_IMPORT
to their description.smos-scheduler
: A sample
command to help you produce templates in a feedback loop.smos
: convUrlWaitingForReview
, a convenience function for waiting for review at a given url.smos-sync-client
: Now removes empty directories after syncing, by default.
See its documentation for information about how to turn this off.smos-archive
: Can now also take commands. The original use of smos-archive <file>
still works, but can now also be invoked as smos-archive file <file>
.smos-archive
: An export
command that lets you export pieces of your archive for cold storage.smos
: convRespondedButStillWaiting
now also adds a DONE
"Respond"
task inbetween.yamlparse-applicative
by autodocodec
.
This massively improved the documentation of configuration file formats, as well as the page about the smos file format.
Now we can have finite schemas for recursive types, so we can show the entire schema.validity
dependency to beyond genvalidity >=1.0.0.0
.smos
: Smarter starter unfolding rule.
Before, smos would go to the last deepest entry as a proxy for the "current" entry for a project.
After this change, smos goes to the first, deepest, not-done entry.
Any entirely-done subforests will also be collapsed on the way there.smosRelease
derivation from 4.9G
to 160M
.smos-shell
libary and executable, as well as the reports in the browser.
These reports were not configurable, and no one was using them.
People would switch to the CLI, or use the interactive reports, before they would ever use the web reports.smos
: Fixed that the convRepinged
and convRespondedButStillWaiting
convenience functions that duplicate an entry would also duplicate their logbook.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 consistentsmos
: 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 configurablesmos-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 sizesmos-server
: Now performs automatic smos file format migration for the smos files and smos backup files it storessmos-server
: Admin endpoint for the admin panelsmos-web-server
: Admin panel with basic user informationsmos-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-github
:
For integrating with githubsmos-server
:
The /api-version
endpoint for querying the API versionsmos-client
:
Client functions to call the /api-version
endpoint for checking compatibility of the client with the server's API versionsmos-notify
:
For integrating with desktop notificationssmos-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:
where they used to be drawn in this order:
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 emptysmos-query
:
The 'timestamp' projection.
You can now use timestamp:DEADLINE
as a column in your reports.smos
:
Interactive agenda report with filter barsmos
:
Filter bar for the interactive waiting reportsmos
:
You can now exit any report using Esc
, even when no file had been selected beforehand.
Thank you @ketzacoatl!smos
:
Interactive stuck projects reportsmos
:
Filter bar for the built-in file browsersmos
:
The forestToggleCollapseEntryProperties
action, bound to zp
by default.--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.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.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.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