{"id":49222081,"url":"https://github.com/gustmrg/devlog","last_synced_at":"2026-04-24T04:07:24.438Z","repository":{"id":352947054,"uuid":"1213984600","full_name":"gustmrg/devlog","owner":"gustmrg","description":"A command-line tool for developers to track daily activities and generate formatted timesheet summaries.","archived":false,"fork":false,"pushed_at":"2026-04-21T19:48:41.000Z","size":47,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T21:33:51.789Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/gustmrg.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-18T01:30:16.000Z","updated_at":"2026-04-21T19:48:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gustmrg/devlog","commit_stats":null,"previous_names":["gustmrg/devlog"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gustmrg/devlog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gustmrg%2Fdevlog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gustmrg%2Fdevlog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gustmrg%2Fdevlog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gustmrg%2Fdevlog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gustmrg","download_url":"https://codeload.github.com/gustmrg/devlog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gustmrg%2Fdevlog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32208517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-24T04:07:23.829Z","updated_at":"2026-04-24T04:07:24.431Z","avatar_url":"https://github.com/gustmrg.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DevLog\n\n![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?logo=go)\n![Latest Release](https://img.shields.io/github/v/release/gustmrg/devlog)\n![License](https://img.shields.io/github/license/gustmrg/devlog)\n\nA command-line tool for developers to track daily activities and generate formatted timesheet summaries.\n\n---\n\n## Features\n\n- Log activities with project, tags, and duration as you work\n- Generate structured summaries ready to paste into a timesheet\n- Multiple output styles: concise, detailed, formal, impersonal\n- AI-powered narrative polish via OpenRouter (opt-in)\n- Filter entries by date, week, project, or tag\n- All data stored locally — no account required\n\n---\n\n## Quick Start\n\n```bash\n# Log an activity\ndevlog add \"Fixed pagination bug on transactions list\" -p bitfinance -t frontend -d 30\n\n# Log interactively\ndevlog add -i\n\n# View today's entries\ndevlog list\n\n# Generate today's summary\ndevlog summary create\n\n# Generate an AI-polished summary in formal style\ndevlog summary create --ai --style formal\n\n# List all generated summaries\ndevlog summary list\n\n# View a specific summary\ndevlog summary show --date 2026-04-13\n```\n\n**Example output:**\n\n```\n$ devlog summary create --style concise\n\n## 2026-04-14 — 2h 30min\n\n### Echo\n- Implemented JWT auth middleware (45min)\n- Built refresh token rotation logic (1h 15min)\n\n### BitFinance\n- Fixed budget category filter bug (30min)\n\n✔ Summary saved to ~/.devlog/summaries/2026-04-14.md\n```\n\n---\n\n## Installation\n\n### Download binary (recommended)\n\nDownload the latest release for your platform from the [releases page](https://github.com/gustmrg/devlog/releases).\n\n**macOS / Linux:**\n\n```bash\n# Extract and move to PATH (adjust filename for your platform/version)\ntar -xzf devlog_\u003cversion\u003e_darwin_arm64.tar.gz\nmv devlog /usr/local/bin/\n```\n\n**Windows:** download the `.zip`, extract `devlog.exe`, and add it to your `PATH`.\n\n### Build from source\n\n**Prerequisites:** [Go](https://go.dev/dl/) 1.21+ must be installed.\n\n```bash\ngit clone https://github.com/gustmrg/devlog\ncd devlog\ngo build -o bin/devlog .\nmv bin/devlog /usr/local/bin/\n```\n\n### Post-install\n\nInitialize the data directory:\n\n```bash\ndevlog init\n```\n\n---\n\n## Commands\n\n### `devlog init`\n\nCreates the `~/.devlog/` directory structure and a default `config.json`. Safe to run multiple times — will not overwrite existing data.\n\n---\n\n### `devlog add`\n\nLogs a new activity entry.\n\n```\ndevlog add \u003cdescription\u003e [options]\n```\n\n| Option | Short | Description |\n|---|---|---|\n| `--project \u003cname\u003e` | `-p` | Project name (uses config default if omitted) |\n| `--tags \u003clist\u003e` | `-t` | Comma-separated tags |\n| `--duration \u003cminutes\u003e` | `-d` | Time spent in minutes |\n| `--date \u003cYYYY-MM-DD\u003e` | | Override date (defaults to today) |\n| `-i` | | Interactive mode — prompts for each field |\n\n```bash\ndevlog add \"Implemented refresh token rotation\" -p echo -t backend,auth -d 75\ndevlog add -i\n```\n\n---\n\n### `devlog list`\n\nDisplays logged entries with optional filters.\n\n| Option | Short | Description |\n|---|---|---|\n| `--date \u003cYYYY-MM-DD\u003e` | | Show entries for a specific date |\n| `--week` | `-w` | Show entries for the current week |\n| `--project \u003cname\u003e` | `-p` | Filter by project |\n| `--tag \u003cname\u003e` | | Filter by tag |\n\n```bash\ndevlog list\ndevlog list --week\ndevlog list --project echo\ndevlog list --date 2026-04-13\n```\n\n---\n\n### `devlog edit \u003cid\u003e`\n\nOpens an interactive prompt to modify an existing entry. Current values are shown as defaults — press Enter to keep them.\n\n```bash\ndevlog edit a1b2c3d4\n```\n\n---\n\n### `devlog delete \u003cid\u003e`\n\nRemoves an entry after confirmation.\n\n```bash\ndevlog delete a1b2c3d4\n```\n\n---\n\n### `devlog summary create`\n\nGenerates a structured summary from logged entries and saves it to `~/.devlog/summaries/`.\n\n| Option | Short | Description |\n|---|---|---|\n| `--date \u003cYYYY-MM-DD\u003e` | | Summarize a specific date (defaults to today) |\n| `--week` | `-w` | Generate a weekly summary |\n| `--style \u003cstyle\u003e` | `-s` | Output style (see [Summary Styles](#summary-styles)) |\n| `--ai` | | Use an LLM to produce a polished narrative |\n| `--format \u003ctemplate\u003e` | `-f` | Template from `~/.devlog/templates/` |\n\n```bash\ndevlog summary create\ndevlog summary create --style formal\ndevlog summary create --week --style detailed\ndevlog summary create --ai --style impersonal\n```\n\n---\n\n### `devlog summary list`\n\nLists previously generated summaries from `~/.devlog/summaries/`.\n\n| Option | Short | Description |\n|---|---|---|\n| `--week` | `-w` | Show summaries from the current week |\n| `--month` | `-m` | Show summaries from the current month |\n| `--from \u003cYYYY-MM-DD\u003e` | | Start of date range |\n| `--to \u003cYYYY-MM-DD\u003e` | | End of date range |\n\n```bash\ndevlog summary list\ndevlog summary list --week\ndevlog summary list --month\ndevlog summary list --from 2026-04-01 --to 2026-04-14\n```\n\n---\n\n### `devlog summary show`\n\nDisplays the contents of a previously generated summary.\n\n| Option | Short | Description |\n|---|---|---|\n| `--date \u003cYYYY-MM-DD\u003e` | | Show summary for a specific date (defaults to today) |\n\n```bash\ndevlog summary show\ndevlog summary show --date 2026-04-13\n```\n\n---\n\n### `devlog config`\n\nReads and writes configuration values using `set`, `get`, and `list` subcommands.\n\n```bash\ndevlog config set \u003ckey\u003e \u003cvalue\u003e\ndevlog config get \u003ckey\u003e\ndevlog config list\n```\n\n| Key | Description |\n|---|---|\n| `defaultProject` | Default project when `-p` is omitted on `devlog add` |\n| `style` | Default summary style |\n| `language` | Output language for AI summaries (e.g. `pt-BR`, `en-US`) |\n| `llm.enabled` | Enable or disable AI-powered summaries (`true` / `false`) |\n| `llm.model` | LLM model to use (e.g. `openai/gpt-4o-mini`) |\n| `llm.provider` | LLM provider (e.g. `openrouter`) |\n| `llm.apiKeyEnvVar` | Environment variable holding the API key |\n\n```bash\ndevlog config set defaultProject myapp\ndevlog config set language en-US\ndevlog config set style formal\ndevlog config set llm.enabled true\ndevlog config set llm.model \"openai/gpt-4o-mini\"\ndevlog config get defaultProject\ndevlog config list\n```\n\n---\n\n## Summary Styles\n\n| Style | Description |\n|---|---|\n| `concise` | One line per activity, minimal detail. Best for quick timesheet entries. |\n| `detailed` | Full breakdown with durations, tags, and timestamps. |\n| `formal` | Third-person, complete sentences. Suitable for corporate timesheets. |\n| `impersonal` | Passive voice, no pronouns. Common in consulting contexts. |\n\nSet a default style so you never have to type it:\n\n```bash\ndevlog config set style concise\n```\n\n---\n\n## AI-Enhanced Summaries\n\nWhen you pass `--ai`, DevLog groups your entries and sends them to an LLM, which rewrites them as a polished narrative according to the chosen style.\n\n**Setup:**\n\n```bash\n# Set your OpenRouter API key as an environment variable\nexport OPENROUTER_API_KEY=sk-or-xxx\n\n# Enable AI in config\ndevlog config set llm.enabled true\n```\n\n**Example:**\n\n```\n$ devlog summary create --ai --style formal\n\n## 2026-04-14 — 2h 30min\n\nWorked on authentication infrastructure for the Echo project, implementing JWT\nmiddleware with role-based claims and secure refresh token rotation. Additionally,\nresolved a filtering defect in the BitFinance budget module.\n\n✔ Summary saved to ~/.devlog/summaries/2026-04-14.md\n```\n\nWithout `--ai`, summaries are generated instantly from a template — no API key required.\n\n---\n\n## Configuration\n\nConfiguration is stored at `~/.devlog/config.json`.\n\n```json\n{\n  \"defaults\": {\n    \"project\": \"\",\n    \"style\": \"concise\",\n    \"language\": \"pt-BR\"\n  },\n  \"llm\": {\n    \"enabled\": false,\n    \"provider\": \"openrouter\",\n    \"model\": \"openai/gpt-4o-mini\",\n    \"apiKeyEnvVar\": \"OPENROUTER_API_KEY\"\n  },\n  \"reminder\": {\n    \"enabled\": false,\n    \"time\": \"18:00\"\n  }\n}\n```\n\n| Key | Description |\n|---|---|\n| `defaults.project` | Default project when `--project` is omitted |\n| `defaults.style` | Default summary style |\n| `defaults.language` | Language for AI-generated summaries (e.g. `pt-BR`, `en-US`) |\n| `llm.enabled` | Enable AI-powered summary generation |\n| `llm.model` | LLM model to use |\n| `llm.apiKeyEnvVar` | Environment variable holding the API key |\n| `reminder.enabled` | Enable end-of-day reminder notifications |\n| `reminder.time` | Time to trigger reminder (HH:MM) |\n\n### LLM Integration\n\nDevLog supports AI-powered summary generation via [OpenRouter](https://openrouter.ai), which gives you access to multiple models through a single API key.\n\n**1. Get an API key** at [openrouter.ai/keys](https://openrouter.ai/keys)\n\n**2. Set the environment variable** in your shell:\n\n```sh\nexport OPENROUTER_API_KEY=sk-or-xxx\n```\n\nAdd it to `~/.zshrc` (or `~/.bashrc`) to make it permanent:\n\n```sh\necho 'export OPENROUTER_API_KEY=sk-or-xxx' \u003e\u003e ~/.zshrc\nsource ~/.zshrc\n```\n\n**3. Enable LLM in config:**\n\n```bash\ndevlog config set llm.enabled true\ndevlog config set llm.model \"openai/gpt-4o-mini\"\n```\n\nYou can browse available models at [openrouter.ai/models](https://openrouter.ai/models).\n\n---\n\n## Data Storage\n\nAll data is stored locally under `~/.devlog/`.\n\n```\n~/.devlog/\n├── config.json\n├── entries/\n│   ├── 2026-04-13.json\n│   └── 2026-04-14.json\n├── summaries/\n│   ├── 2026-04-13.md\n│   └── 2026-04-14.md\n└── templates/\n    └── timesheet.md\n```\n\nEntries are stored as JSON (one file per day) and summaries are saved as Markdown.\n\n---\n\n## Built With\n\n- [Go](https://go.dev/) — Language\n- [cobra](https://github.com/spf13/cobra) — CLI framework\n- [viper](https://github.com/spf13/viper) — Configuration management\n- [fatih/color](https://github.com/fatih/color) — Colored terminal output\n- [google/uuid](https://github.com/google/uuid) — Entry ID generation\n- [go-yaml](https://github.com/go-yaml/yaml) — YAML parsing for summary frontmatter\n- [GoReleaser](https://goreleaser.com) — Cross-platform release automation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgustmrg%2Fdevlog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgustmrg%2Fdevlog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgustmrg%2Fdevlog/lists"}