Skip to content

Releases: GregTheMadMonk/noaftodo

1.4.6 Bugfix release

31 Jan 14:11
Compare
Choose a tag to compare

There some REALLY unfortunate bugs in 1.4.5 (which were present even earlier) that I didn't notice. So here is the release where I fix them.

Changelog:

  • Replace potentially problematic (caused segfault when compiled with _FORTIFY_SOURCE) time_s::fmt_sprintf with time_s::fmt_str
  • Update cmd::retval (command return value) after every command
  • Update cui::status (program status line) after with every return value that is not empty
  • Codebase: file naming changes, with errors caused by it fixed

1.4.5 release

28 Jan 14:18
Compare
Choose a tag to compare

To be completely honest I'm not very satisfied with this release: TIMELINE mode through developement felt more and more useless and I genuinely can't see myself using it much in the future.
Almost all new features, actually, can be classified as "I don't need it really, but why not throw it in in case someone does".
Anyway, it needed to be over with, as I cant wait for some more radical reworks in 1.5.0 or even 2.0.0.
So, to anyone who sees this, here you go.

image

Fig. 1: Timeline mode in action.

  • Added TIMELINE mode:
    • Displays tasks (surprizse) on a timeline
    • Added commands:
      • timeline.focus
      • timeline.focus_closest
      • timeline.next
      • timeline.prev
      • timeline.scale_up
      • timeline.scale_down
    • Added cvars:
      • timeline.position
      • timeline.unit
      • charset.timeline.marker
      • charset.timeline.marker_now
      • charset.timeline.line
      • charset.timeline.vline
      • charset.timeline.vline_now
      • charset.timeline.rarrow
  • Added durations to tasks:
    • Set in duration meta property of a task
    • Specified while adding after + delimiter in due time field
    • New task flag: due (due already passed, but duration not expired). Task becomes due, then after its duration is expired, is failed
    • Added cvars:
      • colors.entry_due
      • on_task_due_action
      • task_duration_default - duration for tasks for which duration was not explicitly specified
    • Added special task meta fields:
      • duration
      • on_due
  • Added r ("Due in") column (off by default)
  • Allow negative offset in command-line time input format
  • Add a string to default config to set window title on startup
  • Save dues in the list as seconds since epoch to preserve due times when switching timezones
  • Allow to specify task dues in seconds since epoch in commands
  • Remove hardcoded startup mode
  • Bugfixes:
    • LISTVIEW freeze when hiding slelected list
    • :q not exiting program when called from COMMAND mode
    • Screen not updating on task state chages
    • prettier_status.conf fix
  • Build:
    • Allow to override platform build flags
  • Codebase and program logic:
    • Add noaftodo_macro.h for macros
    • Create CONST_DPL macro do declare const and non-const duplicating methods
    • Create a mode declaration macro
    • Add init() method to mode definition
    • Move li::entry methods definitions to a separate header
    • Rewrite time system based on the new time_s struct (and removed noaftodo_time.cpp)
    • Entry flags system reworked
    • Call cui:init() before loading list and config to make sure mode-specific variables and commands are initialized
  • Documentation generator fixes and improvements

1.4.4 release

15 Aug 12:33
Compare
Choose a tag to compare

My status field in 1.4.4
Status field with my config (using scripts/prettier_status.conf)

  • Add custom status fields:
    • Custom status field is set via fields.status.X where X - is a field letter (uppercase or lowercase)
    • :set fields.status.X value - value is a string, that, after being "formatted" (cvars replaced with values), is displayed in status
    • %fields.status.X% returns field as it would be displayed in UI
    • See scripts/prettier_status.conf for an example of "prettyifying" the status
  • Allow to access meta properties directly through %meta.prop_name% cvars (read/write)
  • Allow to access alias code through %alias.alias_name% (read-only)
  • Add more keys that :bind recognizes:
    • home
    • end
    • backspace
    • delete
    • codeNUMBER for key with code NUMBER
    • PageUp as pgup
    • PageDown as pgdn
  • Make ":bind" recognize multi-key input:
    • c^key for ctrl+key
    • a^key for alt+key
    • can be combined like a^c^key or c^a^key
  • Changing only background or foreground color with terminal sequence does not reset the other color from now
  • Move [prefix]_[name] to namespaces [prefix] in code
  • Move cvar initialization to noaftodo_def.cpp

1.4.3 release

21 Jul 21:21
Compare
Choose a tag to compare
  • Add basic markdown support
  • Add !! command to execute system commands without reading their output. Useful for running programs with terminal UI (e.g. vim)
  • Allow multistr_c elements be more than one wchar_t in length (allows for multi-character separators, basically)
  • Rework colors
    • Initialize all color pairs on startup (17 * 17 color pairs), set colors through specifying its pair index (pair_index = fg_col + 1 + (bg_col + 1) * 17, fg_col and bg_col are integers from -1 to 15)
    • Remove colors.bg and colors.status_standout cvars
  • Support color switching with terminal sequences (^[[3*;4*m)
  • Specify status fields in cvars left-to-right instead of right-to-left
  • Add manpage generation, show only relevant (well...) help in program
  • Fix unnamed lists sometimes not displaying in LISTVIEW even if they had visible entries
  • Fix DETAILS and HELP mode scrolling and do an overall reworking of some UI code

1.4.0 release

30 Jun 17:31
Compare
Choose a tag to compare

Changelog

General changes

  • Improve safe mode. It doesn't exit program, or make it sleep, just shows a message on the screen with a little tip about what have gone wrong. In safe mode, allow saving only when save path is explicitly specified locations.
  • Move all safe mode precautions from :save to li_save().
  • Adjust default config and list paths to respect $HOME and $XDG_CONFIG_HOME.
  • Automatically remove unnamed tags from the end of the tag list.
  • Count lists that don't have visible entries as "empty" in listview mode.
  • Allow to call %prompt% without active UI.
  • Get rid of hardcoded bindings in normal and listview modes.

Command interpreter

Some of the removed commands are preserved as aliases to equivalent commands in configs

  • Reworked command parser to be more consistent
  • Added title, desc, due editable cvars to make editing tasks easier
  • Added meta cvar
  • Added :math command to perform basic arithmetic and logic operations
  • Added :if command as a primitive conditional
  • Removed :toggle. Use :if %name% "set name false" "set name true" instead. (aliased in default config)
  • Removed :vtoggle. Use :toggle filter.[category] (aliased in legacy_aliases.conf)
  • Removed :g. Use :set id (aliased in legacy_aliases.conf)
  • Removed :list. Use :set tag_filter (to switch to the list, aliased in legacy_aliases.conf) or :set tag_filter_v to switch to a visible list.
  • Removed :up and :down. Use :math command on id cvar (aliased in legacy_aliases.conf).
  • Removed :next and :prev. Use :math command on tag_filter_v cvar (aliased in legacy_aliases.conf).
  • Removed :clrmeta. Use :set meta instead.
  • Removed :lrename. Use :set pname instead.
  • Removed :unbind. Use :bind with a single argument instead.
  • Removed ::,:?, :details and :listview. Use :set mode instead (aliased in default config).
  • Removed :lmv. Use :set parent instead (aliased in legacy_aliases.conf).
  • Removed :c. Use :toggle comp instead (yeah, I know :toggle was removed, but everything that is in default config kinda counts as a part of the program :) )
  • Removed daemon.list_update_tick cvar.
  • Renamed:
    • T to title
    • D to desc
    • contexec_cmd_regex to cmd.contexec
    • regex_filter to norm.regex_filter
    • list_regex_filter to livi.regex_filter
    • shift_multivars to frameshift_multistr
    • colors.background to colors.bg
    • charset.row_separator to charset.separators.row
    • charset.row_separator.offset to charset.separators.row.offset
    • charset.status_separator to charset.separators.status
    • charset.details_separator to charset.separator.details
    • all_cols to norm.cols.all
    • cols to norm.cols
    • listview_cols to livi.cols
    • details_cols to det.cols
    • daemon.fork_autostart to autorun_daemon
    • show_uncat to filter.uncat
    • show_complete to filter.complete
    • show_coming to filter.coming
    • show_failed to filter.failed
    • show_nodue to filter.nodue
    • lview_show_empty to show.empty
    • charset.box_border_h to charset.box_strong.h
    • charset.box_border_v to charset.box_strong.v
    • charset.box_corner_1 to charset.box_strong.corn1
    • charset.box_corner_2 to charset.box_strong.corn2
    • charset.box_corner_3 to charset.box_strong.corn3
    • charset.box_corner_4 to charset.box_strong.corn4
    • charset.box_ui_line_h to charset.box_light.h
    • first_visible_id to first_v_id
    • last_visible_id to last_v_id
    • first_visible_list to first_v_list
    • last_visible_list to last_v_list

Pheew! I hope, I didn't forget anything :)

First release. How many bug does it have?

08 May 08:55
Compare
Choose a tag to compare

First release of NOAFtodo.
Tested pretty poorly, and needs more documentation, but functional and +- has all needed features.
So... this is more of a milestone, just clone what is on master and it's probably going to be more stable.