Repository navigation
v0.7.0
GitFolio 0.7.0
New users start in local mode. gitfolio init now asks whether to sync with aline.team, and the default is no: nothing leaves your computer by itself, and aline.team gets daily totals only when you look up your developer type or portfolio, or run gitfolio sync. Existing setups keep their mode; gitfolio config autosync on|off switches.
New
gitfolio portfolio: a portfolio from your git history (developer type, tech stack, repositories) as Markdown or PDF, printed with Chrome, Edge or Chromium on your computer.--fromprints a Markdown file you edited.gitfolio mcpand a plugin for Claude Code and Codex (marketplacealineteam): AI coding tools read what you allow and can help you set GitFolio up.gitfolio config aisets per repository its name (real, anonymous or another), commit messages (off, subjects or full) and branch names, or hides it. File paths are never shown.gitfolio initasks for consent where it matters and lists every action starting GitFolio takes. Git hooks are installed in the repositories you choose, on this computer only (gitfolio removeundoes it).gitfolio git updateupdates git where it can (Homebrew, winget) or opens the right place.- A mistyped command or flag names the ones meant, and aline.team answers in your screen language.
- For programs: login and work email codes in two runs (
login --email,--code), and--jsonfor more commands.
Changed
- aline.team takes commits under a GitHub or GitLab noreply address once you link that account at https://aline.team/settings/manage-git. GitFolio now says so for a repository waiting on one; the older form without the account number and a GitLab server's address are not taken.
- macOS 13 (Ventura) or later.
Fixes
- A private key in a commit message is masked whole (PGP keys too), and GitLab, npm, Google and Stripe tokens are masked. Messages already stored are masked again once, on the next scan.
- AI tools see no full commit hashes in messages, and find a repository only by the name they see or its path.
- A repository whose folder is gone keeps its address; one moved and added again collects its commits again.
remove --purgeleaves aline.team's copy when another registered repository has the same address.- A sync that finds the login gone keeps what is queued; a commit line cut short no longer stops every command; a snapshot more than a day ahead of aline.team's clock is skipped instead of failing the sync.
logoutno longer logs in again to revoke an expired login;deps reviewrefuses a word it does not take.
Full changelog: v0.6.4...v0.7.0
Changelog
- 618aa05: feat: gitfolio portfolio writes a portfolio from git history (@Dunn-Kim)
- 633b287: feat: gitfolio portfolio asks for md or pdf at a terminal (@Dunn-Kim)
- ca0f878: feat: a mistyped word or flag after a command names the ones meant (@Dunn-Kim)
- 9bd8fbc: feat: ask aline.team in the screen language (@Dunn-Kim)
- f78cf57: fix: align export in the help again (@Dunn-Kim)
- 6b0286b: feat: gitfolio mcp serves GitFolio to AI coding tools (@Dunn-Kim)
- b947617: feat: GitFolio plugin for Claude Code and Codex (@Dunn-Kim)
- e9dc760: feat: config ai sets what AI tools see of each repository (@Dunn-Kim)
- f1f5bb4: feat: work and timeline MCP tools count the user's work here (@Dunn-Kim)
- 0a1a297: feat: commits MCP tool for repositories that show their messages (@Dunn-Kim)
- 89e5bc0: feat: devtype MCP tool gives aline.team's reasoning for each score (@Dunn-Kim)
- 4aeda86: refactor: sign-in and work email checks start and finish separately (@Dunn-Kim)
- f4ccd8b: feat: MCP tools to start GitFolio from an AI tool (@Dunn-Kim)
- 25aab7f: feat: plugin skills set GitFolio up and interview for a portfolio (@Dunn-Kim)
- 3e5c7ff: feat: init and the policy tool list every action starting GitFolio takes (@Dunn-Kim)
- 4a29fd9: feat: init asks for consent where it matters, not a list to read (@Dunn-Kim)
- e95e927: feat: local mode by default; init asks whether to sync with aline.team (@Dunn-Kim)
- b9a2408: refactor: drop a one-use hook wrapper, an always-true argument and a one-line helper (@Dunn-Kim)
- 525bc1c: refactor: one helper finishes the sign-in and work email codes (@Dunn-Kim)
- 8ae1c7b: refactor: MCP tool inputs declared with object and prop (@Dunn-Kim)
- 823e370: chore: keep the CLI token's format and server limits out of the public repo (@Dunn-Kim)
- 1d8a38a: fix: build with Go 1.27.3 for its security fixes (@Dunn-Kim)
- afce9ed: Merge stage (v0.6.0) into feature/v0.7.0 (@Dunn-Kim)
- 96c4527: fix: the daily sync runs the gitfolio that set it, on its data (@Dunn-Kim)
- e8f4469: Merge main (v0.6.1) into stage (@Dunn-Kim)
- db634f2: perf: deps review relabels stored commits instead of collecting them again (@Dunn-Kim)
- 2705656: perf: a Homebrew update refreshes only GitFolio's tap (@Dunn-Kim)
- a0edab7: perf: a scan skips repositories with nothing new to read (@Dunn-Kim)
- 3f12854: perf: read the git of several repositories side by side (@Dunn-Kim)
- 942deeb: perf: count changed lines only for the commits that get stored (@Dunn-Kim)
- c94fcf8: perf: run the Command Line Tools' git directly on macOS (@Dunn-Kim)
- 45c0750: fix: update the tap the way brew update runs git on it (@Dunn-Kim)
- 0aa692f: fix: a scan that skips the history still finds every new commit (@Dunn-Kim)
- 137ed1f: fix: read file paths of renames whatever characters they have (@Dunn-Kim)
- dec93f6: chore: builds from source lead to 0.7.1 (@Dunn-Kim)
- 53e9f21: Merge main (v0.6.2) into stage (@Dunn-Kim)
- 8407ab4: fix: the email list no longer holds the lock while it asks aline.team (@Dunn-Kim)
- 12605c5: fix: files written outside the lock never share a temporary file (@Dunn-Kim)
- bab4202: fix: a lock left behind is taken over by one run, and only when its run is gone (@Dunn-Kim)
- 915f7dc: Merge main (v0.6.3) into stage (@Dunn-Kim)
- db3f6df: fix: the update to run by hand names the cask in full (@Dunn-Kim)
- 668e943: fix: on Windows a run no longer waits on a lock it could not remove (@Dunn-Kim)
- f72c855: feat: gitfolio git update updates git the way it was installed (@Dunn-Kim)
- 541dd65: Merge main into stage (@Dunn-Kim)
- e969583: fix: on Windows a lock still being deleted is waited for, not an error (@Dunn-Kim)
- 097c484: fix: the data lock is the system's file lock, which goes with its process (@Dunn-Kim)
- bd8a971: Merge main into stage (@Dunn-Kim)
- af5fb38: feat: gitfolio add --no-hooks registers a repository without git hooks (@Dunn-Kim)
- c8414ec: feat: gitfolio config ai --json gives every repository's AI settings (@Dunn-Kim)
- bc797a4: feat: init --policy --json also says what starting GitFolio does (@Dunn-Kim)
- 4f5b4e2: Revert "feat: gitfolio add --no-hooks registers a repository without git hooks" (@Dunn-Kim)
- d3c08cd: feat: init tells about the git hooks instead of asking (@Dunn-Kim)
- 86e2acd: build: the Homebrew cask and README say macOS 13 (Ventura) or later (@Dunn-Kim)
- 583ee15: feat: codes from email are entered in the app or a terminal, not in an AI chat (@Dunn-Kim)
- 17ec4f1: feat: a sign-up that waits for agreement gives the terms to show (@Dunn-Kim)
- 52cb4c1: feat: login_verify takes the code in an AI chat again, beside the app and a terminal (@Dunn-Kim)
- 434f8a2: fix: email_start refuses a noreply address, as email verify does (@Dunn-Kim)
- 873f95d: fix: init --policy --json names the data folder in the setup actions (@Dunn-Kim)
- 916a872: fix: a private key in a commit message is masked whole, and so are more tokens (@Dunn-Kim)
- 854df90: fix: AI tools see no full commit hashes in commit messages (@Dunn-Kim)
- 1dae5ae: fix: a repository whose folder is gone keeps its address (@Dunn-Kim)
- 07530a9: fix: remove --purge leaves aline.team's copy to another repository with the same address (@Dunn-Kim)
- fa85fed: fix: a repository moved and added again collects its commits again (@Dunn-Kim)
- 1052215: fix: a sync that finds the login gone keeps what is queued (@Dunn-Kim)
- d831d96: fix: a commit line cut short no longer stops every command (@Dunn-Kim)
- fa55b92: fix: AI tools find a repository by the name they see or a path, not its own name (@Dunn-Kim)
- 8af9897: fix: the status tool masks the last sync error it gives AI tools (@Dunn-Kim)
- 49c6128: fix: the portfolio goes without a developer type it could not get (@Dunn-Kim)
- b311e03: fix: deps review refuses a word it does not take instead of declining every file (@Dunn-Kim)
- bfb0913: fix: logout does not log in again to revoke a login that has expired (@Dunn-Kim)
- 3e01fc5: fix: the tech stack reads this computer's data under the data lock (@Dunn-Kim)
- 4810328: refactor: one function finishes a kept code, and one says the login (@Dunn-Kim)
- ea59a33: fix: set_sync_mode says when the past commits go, and changes the mode as config autosync does (@Dunn-Kim)
- 90be39e: refactor: the timeline counts each month with summarize (@Dunn-Kim)
- afa6c7f: refactor: one reader for the JSON lines files (@Dunn-Kim)
- 01b2ac1: perf: a scan reads the stored commits once, not again for every repository (@Dunn-Kim)
- 4e9cf00: perf: sync.json is saved once after the snapshots, not after each one (@Dunn-Kim)
- 8d9b377: fix: a snapshot more than a day ahead of aline.team's clock is skipped, not the whole sync (@Dunn-Kim)
- a1b048c: fix: a noreply address is taken once its account is linked on aline.team, and GitFolio says so (@Dunn-Kim)