{"id":49359913,"url":"https://github.com/metaory/timelog","last_synced_at":"2026-06-01T20:02:38.949Z","repository":{"id":353326690,"uuid":"1218045286","full_name":"metaory/timelog","owner":"metaory","description":"Lap-timed terminal notes, line by line","archived":false,"fork":false,"pushed_at":"2026-04-28T19:40:02.000Z","size":825,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-14T02:04:22.450Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/metaory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-22T13:30:32.000Z","updated_at":"2026-04-28T19:40:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/metaory/timelog","commit_stats":null,"previous_names":["metaory/timelog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/metaory/timelog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Ftimelog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Ftimelog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Ftimelog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Ftimelog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metaory","download_url":"https://codeload.github.com/metaory/timelog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaory%2Ftimelog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33790933,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-04-27T16:00:25.284Z","updated_at":"2026-06-01T20:02:38.932Z","avatar_url":"https://github.com/metaory.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\".github/logo.svg\" alt=\"\" width=\"180\" height=\"180\" /\u003e\n    \u003ch1\u003etimelog\u003c/h1\u003e\n    \u003cp\u003eMinimal Bash TUI for timestamped terminal logs.\u003c/p\u003e\n\u003c/div\u003e\n\n## Description\n\n`timelog` is a single Bash script that logs lines as `index  time  ::  text` in a full-screen terminal loop. Time column modes: `clock` (`HH:MM:SS`), `lap` (`+HH:MM:SS` since previous line), and `total` (`+HH:MM:SS` since first line).\n\nInteractive mode (TTY) reads keys directly, supports **Ctrl+S** to save entries to `./\u003cepoch\u003e.log`, and restores terminal state on exit/signals. Non-interactive mode (piped stdin) falls back to line reads and skips hotkey setup.\n\n### Modes\n\n- `clock`: records the current wall-clock time for each entry.\n- `lap`: records the time passed since the previous entry.\n- `total`: records total elapsed time since the first entry.\n\n## Demos\n\n### Clock (`--clock`)\n\n![timelog clock mode demo](.github/demos/clock.gif)\n\n- `1  09:00:02 :: Open project` - real clock when you wrote entry 1.\n- `2  09:02:18 :: Run tests` - later clock time for entry 2.\n- `3  09:05:41 :: Commit fix` - current clock time again for entry 3.\n\n### Lap (`--lap`)\n\n![timelog lap mode demo](.github/demos/lap.gif)\n\n- `1  +00:00:00 :: Open project` - first entry always starts at zero.\n- `2  +00:02:16 :: Run tests` - took 2m16s after previous entry.\n- `3  +00:03:23 :: Commit fix` - took 3m23s since entry 2.\n\n### Total (`--total`)\n\n![timelog total mode demo](.github/demos/total.gif)\n\n- `1  +00:00:00 :: Open project` - first entry starts elapsed timer.\n- `2  +00:02:16 :: Run tests` - total elapsed since entry 1.\n- `3  +00:05:39 :: Commit fix` - cumulative elapsed from the start.\n\n## Usage\n\n```bash\nbash timelog\nbash timelog --clock    # same as no args (wall-clock hour:minute:second per line)\nbash timelog --lap      # delta since previous line (+HH:MM:SS), first line +00:00:00\nbash timelog --total    # elapsed since first line (+HH:MM:SS), first line +00:00:00\n# shorts: -c (clock), -l (lap), -t (total)\n```\n\nType a line and press **Enter**. Each entry is recorded as `index  time  ::  text` and the screen refreshes. Empty lines are skipped. **Ctrl+S** saves committed entries to a new epoch-named `.log` in the current directory (status appears below the list). Exit with **Ctrl+C** or **Ctrl+D** (EOF).\n\nTo run it directly:\n\n```bash\nchmod +x timelog\ncp timelog ~/.local/bin/timelog   # or /usr/local/bin/timelog\n```\n\nMake sure the destination directory is in your `PATH`.\n\n## Requirements\n\n- Bash\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaory%2Ftimelog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetaory%2Ftimelog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaory%2Ftimelog/lists"}