{"id":13472479,"url":"https://github.com/soywod/unfog","last_synced_at":"2025-04-04T12:06:13.314Z","repository":{"id":47374686,"uuid":"216746957","full_name":"soywod/unfog","owner":"soywod","description":"⏱ Minimalist CLI task \u0026 time manager, written in Haskell.","archived":false,"fork":false,"pushed_at":"2025-02-05T07:11:31.000Z","size":476,"stargazers_count":202,"open_issues_count":9,"forks_count":7,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-28T11:07:08.022Z","etag":null,"topics":["cli","haskell","haskell-cli","haskell-stack","task-manager","time-tracker","worktime"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soywod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"soywod","patreon":"soywod","custom":"https://www.paypal.com/paypalme/soywod"}},"created_at":"2019-10-22T07:12:01.000Z","updated_at":"2025-03-24T01:04:58.000Z","dependencies_parsed_at":"2024-01-16T06:09:53.493Z","dependency_job_id":"8b743b75-c55c-4087-9075-d3fa4a84bea8","html_url":"https://github.com/soywod/unfog","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soywod%2Funfog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soywod%2Funfog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soywod%2Funfog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soywod%2Funfog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soywod","download_url":"https://codeload.github.com/soywod/unfog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174407,"owners_count":20896076,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","haskell","haskell-cli","haskell-stack","task-manager","time-tracker","worktime"],"created_at":"2024-07-31T16:00:54.992Z","updated_at":"2025-04-04T12:06:13.296Z","avatar_url":"https://github.com/soywod.png","language":"Haskell","readme":"# ⏱ Unfog\n\nMinimalist CLI task \u0026 time manager, written in [Haskell](https://www.haskell.org).\n\n*🚧 A rewrite in Rust is planned current 2025, stay tuned! 🚧*\n\n![image](https://user-images.githubusercontent.com/10437171/89771094-1199da80-db00-11ea-8e65-12da9ec4161a.png)\n\n## Table of contents\n\n* [Motivation](#motivation)\n* [Concept](#concept)\n* [Installation](#installation)\n* [Configuration](#configuration)\n* [Usage](#usage)\n* [Interfaces](#interfaces)\n* [License](https://github.com/soywod/unfog/blob/master/LICENSE)\n* [Changelog](https://github.com/soywod/unfog/blob/master/CHANGELOG.md)\n* [Credits](#credits)\n\n## Motivation\n\n[Taskwarrior](https://taskwarrior.org) is a good and powerful CLI to track your\ntasks, but it requires time to configure it. The amount of features is giant,\nwhich can lead to confusion.  Plus, if you also want to track your time, you\nneed to install the [Timewarrior](https://taskwarrior.org/docs/timewarrior)\nplugin, which makes the configuration step even heavier.\n\nIn the other hand, [Watson](https://github.com/TailorDev/Watson) tracks well\nyour time but can't tracks your tasks.\n\nUnfog proposes an alternative solution that:\n\n- is easy to install / configure / use\n- can track your tasks AND your time\n\n## Concept\n\nA task is composed of a description and an optionnal due time. It can be\nattached to a project. It can be started and stopped (to track time) and done\nor deleted (to track projects).\n\nBasic reports can be generated to have an overview of your tasks and your\nprojects. They allow you to determine how and where the time was spent, if\nprojects fits their initial estimations…\n\n## Installation\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/soywod/unfog/master/install.sh | bash\n```\n\n*See [wiki section](https://github.com/soywod/unfog/wiki/Installation) for more\ninformation.*\n\n## Configuration\n\n```toml\n# ~/.config/unfog/config.toml\n\n# Store file location.\n# Default: $XDG_CONFIG_HOME/unfog/store\n# Warning: only absolute paths are supported for now,\n# see https://github.com/soywod/unfog/issues/45\nstore-path = \"/abs/path/to/store\"\n```\n\n*See [wiki section](https://github.com/soywod/unfog/wiki/Configuration) for\nmore information.*\n\n## Usage\n\n```\n⏱ Unfog - Minimalist task \u0026 time manager\n\nUsage: unfog COMMAND\n\nAvailable options:\n  -h,--help                Show this help text\n\nAvailable commands:\n  list                     Show current project tasks [l]\n  info                     Show task details [i]\n  worktime                 Show worktime report [wtime, w]\n  status                   Show active task info [stat]\n  add                      Add a new task [a]\n  edit                     Edit an existing task [e]\n  start                    Start a task [sta, s]\n  stop                     Stop a task [sto, S]\n  toggle                   Toggle a task [tog, t]\n  done                     Mark as done a task [do, d]\n  undone                   Unmark as done a task [undo, u]\n  delete                   Delete a task [del, D]\n  undelete                 Undelete a task [undel, U]\n  context                  Change the current project [ctx, c]\n  upgrade                  Upgrade the CLI\n  version                  Show the version\n  cache:clear              Clear the state cache\n```\n\n*See [wiki section](https://github.com/soywod/unfog/wiki/Usage) for more\ninformation.*\n\n## Interfaces\n\n- [Unfog.vim](https://github.com/soywod/unfog.vim), a (neo)vim plugin\n\n*See [wiki section](https://github.com/soywod/unfog/wiki/Interfaces) for more\ninformation.*\n\n# FAQ\n\n## How can I get command history and completion?\n\nWhile waiting for the Rust rewrite, you can use `rlwrap` to add these features:\n\n```bash\n#!/usr/bin/env bash\n\n# Provides an interactive REPL (Read-Eval-Print Loop) for Unfog task manager.\n# Features: command history, tab completion, and line editing. Commands are\n# passed directly to unfog CLI.\n\nset -euo pipefail\n\ncompletion_file=$(mktemp)\ntrap 'rm -f \"$completion_file\"' EXIT\n\n{\n   unfog --bash-completion-index 0;\n   printf 'help\\n';\n   printf 'quit\\n';\n} \u003e\u003e \"$completion_file\"\n\nunfog_repl() {\n    printf \"Welcome to unfog REPL. Type 'quit' to exit.\\n\"\n    local cmd\n    while true; do\n        read -r cmd || break\n\n        [[ -z \"$cmd\" ]] \u0026\u0026 continue\n        case \"$cmd\" in\n             quit) break ;;\n             help) unfog --help | sed -n '/Available commands:/,$p' ;;\n             *) unfog $cmd ;;\n         esac\n    done\n}\n\nif ! command -v rlwrap \u003e/dev/null 2\u003e\u00261; then\n    printf 'Error: rlwrap is not installed. Please install it first.'\n    exit 1\nfi\n\nexport -f unfog_repl\n\n# run REPL\nexec rlwrap \\\n    -p'Cyan' \\\n    -a \\\n    -H \"${XDG_STATE_HOME:-$HOME/.local/state}/unfog_history\" \\\n    -f \"$completion_file\" \\\n    -S 'unfog-repl\u003e ' \\\n    bash -c unfog_repl\n```\n\n## Credits\n\n- [Kronos](https://github.com/soywod/kronos.vim), the unfog predecessor\n- [Taskwarrior](https://taskwarrior.org), a task manager\n- [Timewarrior](https://taskwarrior.org/docs/timewarrior), a time tracker plugin for Taskwarrior\n- [Watson](https://github.com/TailorDev/Watson), a time tracker\n\n*See [wiki section](https://github.com/soywod/unfog/wiki/Credits) for more\ninformation.*\n","funding_links":["https://ko-fi.com/soywod","https://patreon.com/soywod","https://www.paypal.com/paypalme/soywod"],"categories":["Haskell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoywod%2Funfog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoywod%2Funfog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoywod%2Funfog/lists"}