Releases: underworld14/pine
Release list
Pine 0.8.2
What's new
Same features as 0.8.0, with a coverage/toolchain fix so GitHub Release binaries actually publish.
Highlights
pine upgrade— self-update from GitHub Releases (--check,--force)- Ticket
phasefield (CLI / API / web types) pine readyas epic → children tree;pine list --flatremoved
Note: v0.8.0 and v0.8.1 tags exist but their release jobs failed the coverage gate (no assets). Prefer v0.8.2.
Install
pine upgrade
# or download an archive from Assets belowPine 0.8.1
What's new
Same as v0.8.0, with coverage tests so GitHub Release assets publish successfully.
Highlights
pine upgrade— self-update from GitHub Releases- Ticket
phasefield (CLI / API / web types) pine readyas epic → children tree;pine list --flatremoved
Note: v0.8.0 was tagged but its CI release job failed the coverage gate (no binaries attached). Use v0.8.1 assets (or
pine upgradeonce this release finishes building).
Install
pine upgradePine 0.8.0
What's new
pine upgrade
Update the installed binary from the latest GitHub Release:
pine upgrade— download, verify checksums, replace in placepine upgrade --check— compare current vs latest (exit 1 if update available)pine upgrade --force— reinstall latest even when versions match
Optional GITHUB_TOKEN / GH_TOKEN raises API rate limits. A go install build is upgraded to the official release archive (full embedded UI).
Ticket phase
Optional rollout phase on tickets (p0, p1, …):
pine create --phase …/pine update --phase …(noneclears)pine list --phase …- Exposed in API / web ticket types
List & ready UX
pine readyprints an epic → children tree (parent epics shown as context headers)pine list --flatremoved; tree is the only text layout
Install
Download the archive for your OS/arch from the assets below, or after this release is published:
pine upgradePine 0.7.1
Pine 0.7.1 — epic relations UI, peek edit parity, tree list, and clearer priorities
A UX-focused release: epic child graphs no longer clip, ticket relations are interactive, the right-hand peek sheet can edit nearly like the full page, pine list defaults to a Beads-style tree, and priority controls use readable labels instead of mystery glyphs.
Highlights
- Epic relations — neighborhood graph wraps children without clipping; parent epic gets breathing room under the meta bar. A full relations panel lists Epic / Blocked by / Blocks / Children / Related;
+N morejumps to the matching section. Click a node or row to open a right peek sheet. Epics get + Add child (create modal withparentset).# Child Ticketsremoved from epic templates (children live in the panel). - Peek edit parity — title, markdown body (preview/edit, autosave + ⌘S), labels, status, priority, and attachments. Dirty body flushes on close, backdrop dismiss, Open full page, Escape, and peek-target switch so edits aren’t lost.
pine listtree — default is epic → children (Beads-style icons + blocker annotations). Use--flatfor the classic table.- Priority labels — shared
PrioritySeg: Low / Med / High / Crit with color, no slow glyph tooltips. Used on ticket detail, peeks, create modal, and board filters. - Graph page — force-layout
GraphView(drag, hover focus) for/graph.
Fixes & polish
- Peek Escape / window shortcuts gated so focus doesn’t escape under the sheet; flush-on-close for dirty bodies.
- Memory
+N moreis non-interactive (Related lists ticket links only). - Go coverage gate held at ≥90%.
Commits since v0.7.0
21c8c35feat: epic relations UI, peek edit parity, tree list, and priority labels
Full changelog: v0.7.0...v0.7.1
Pine 0.7.0
Pine 0.7.0 — second-brain graph, multi-repo serve, and work-evidence closes
A second-brain release: typed graph links turn Pine into a knowledge graph, pine serve now spans all your repos, and pine close --evidence closes tickets with a durable record of what changed.
Highlights
- Knowledge graph — typed
linksconnect tickets, memory topics, and learnings with computed backlinks. A unified graph powers a new/graphpage (radial layout, type filters, zoom/pan) and the ticket neighborhood view. - Multi-repo serve —
pine initauto-registers each repo in~/.pine/repos.json;pine serveauto-discovers them all, with per-repo routing (/api/r/{alias}/…), repo-tagged live-sync, and a dashboard repo switcher.--onlykeeps it to one repo. - Agent workflow —
pine close <ID> --evidencemarks a ticket done and appends a "## Work Evidence" section (commits + agit diff --statfrom the ticket's creation). The plan→create / done→close-evidence flow is installed bypine init's agent wizard.
New features
Graph links & second-brain
linksfrontmatter on tickets and memory topics (refs:ticket,LRN-*,memory/<slug>,MEMORY).- New
internal/linkspackage: ref parsing, unified graph (deps/parent/links), computed backlinks, dangling detection. /api/graph+ dedicated/graphroute withGraphView(custom radial-by-type SVG layout, zoom/pan, type filters).- Ticket neighborhood now renders memory link nodes.
pine doctorflags and auto-fixes dangling ticket/topic/learning links.
Multi-repo serve
pine initauto-registers the repo in~/.pine/repos.json(new--aliasflag; collision hint on conflict).pine serveauto-discovers all registered repos via aStoreRegistry;--onlyrestricts to the cwd repo and is read-only on the registry.- Per-repo routing:
/api/repos,/api/r/{alias}/…, repo-tagged SSE. - All alias-routed mutations/reads/attachments hit the alias store; SSE tagged with the request alias.
SetActiveRepois race-free vs pollers (storeMu/gitMu/crossMu/searchMu);go test -racegreen.- Per-repo git poller emits
git.updatedper repo; the web UI caches git per repo for instant switching. - Web
RepoSwitcher(shown when more than one repo is registered); serve banner marks the active repo.
Agent workflow
pine close <ID> --evidenceappends a "## Work Evidence" section (commits referencing/touching the ticket + agit diff --statfrom the commit at its creation time to the working tree); re-running replaces the section.- New
gitx.CommitBefore/gitx.DiffStatprimitives. pine init's agent wizard installs the plan→create / done→close-evidence skill into CLAUDE.md, AGENTS.md, GEMINI.md, and the Cursor skill. No separatepine injectcommand.
Performance & correctness
store.LinksGraph()is cached on the Store with a generation counter (stale-after-invalidation race fixed); invalidated on every ticket/learning/config/memory change; built outside the cache lock to avoid a lock-ordering inversion.- New
watch.KindMemoryinvalidates the graph cache on memory/MEMORY.mdedits so a long-running serve stays coherent.
Tests
- New tests for links, the workspace registry, the per-repo git poller, alias-routed attachments (upload + delete), concurrent
SetActiveRepo,close --evidence, and graph-cache invalidation (incl. a-racestress test). - Coverage held at ≥90%.
Commits since v0.6.4
c272642feat(web): Trello-smooth board with persisted card order034f641feat: typed graph links, multi-repo serve, and close --evidence agent workflow
Full changelog: v0.6.4...v0.7.0
Pine 0.6.4
Changelog
- 778826a fix(web): make conflict Reload fetch fresh ticket body
Pine 0.6.3
Changelog
- 1770c31 fix(web): assert conflict Reload via textarea value in e2e
Pine 0.6.2
Changelog
- bbb33b9 fix(web): stop conflict Reload racing with click-outside autosave
Pine 0.6.1
Changelog
- 1220dad fix(web): gate svelte-check in CI and harden FE a11y/e2e