diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 9dea233..5da3dcf 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "linkedin-studio", - "version": "0.6.0", + "version": "0.7.0", "description": "LinkedIn Studio — full-spectrum LinkedIn content engine: feed posts, carousels, video scripts, and long-form newsletter editions, with the 2026 relevance-ranking model baked in. v4.0.0 is an audit-remediation release (Voyage Phase 0–3): every user-facing claim is made honest or removed, all 11 previously-orphaned agents are wired (→ 19 agents), a `/linkedin:firsthour` post-publish command is added (→ 27 commands), the algorithm-signal claims are reconciled to one sourced statement (no unpublishable model name or date), short-form de-AI and video quality gates are added, and the structure lint is rebuilt to guard the real layout plus version/count/stat consistency. Breaking: the newly-wired agents register only on reinstall/reload, and this consolidates the v3.0.0 identity break (slug, agent namespace `linkedin-studio:`, state-file path `~/.claude/linkedin-studio.local.md`). v3.1.0 added the cold adversarial review package (`/linkedin:headless-review` + Step 6.5 + `/linkedin:pivot` + per-artifact personas); the `/linkedin:*` commands are unchanged. v4.1.0 adds a journey layer: two guided front-doors (`/linkedin:create`, `/linkedin:measure`) plus a router re-tiered into five journeys (Start · Create · Engage · Measure · Grow), with the 27 existing commands kept as the execution tier (→ 29 commands; additive, reload registers the two new commands).", "author": { "name": "Kjell Tore Guttormsen" diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a30b43..664f8a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.7.0] - 2026-07-23 + +**Trend engine → production bridge.** The discovery pass becomes a first-class command, gains a reader-side proposal + actionability layer, and is wired directly into the long-form pipeline: a trend now flows id-traceably from discovery to a scheduled edition, and a candidate with no formulable reader-grip can no longer inflate the top band. + +### Added — trend discovery command (N5) + +- **`/linkedin:trends`** — trend-discovery pass: delegates to `trend-spotter` (default long-form mode), persists to the trend store + a dated morning brief, triages per candidate (act/skip). Commands 29 → 30. (`a8e3cac`) +- **`trend-spotter` model-pin removed** — the agent now inherits the session model instead of being pinned to `sonnet`, so a discovery pass runs at the session's tier. (`a8e3cac`) + +### Added — trend proposal + reader-side layer (N6) + +- **Proposal fields on the trend record** — `angle` / `targetLevel` / `rationale` / `relatedIds`, plus the reader-side `actionability` (is a reader-grip formulated?) / `verdict` (BÆRENDE/STØTTE/NYHET) and `readerQuestion` / `painPoint` / `saturation`. All additive-optional; store schema stays v4 (no migration). (`65b6033`) +- **Candidate lifecycle** — `new → selected → acted | skipped`; a `select` verb + `--ids` batch triage (partial hit = exit 0, all-miss = exit 2). (`65b6033`) +- **Band-distribution calibration (MR-F6)** — the scoring SSOT now states the expected distribution (Immediate ≥8 is the exception, target ≤~3 of 20), checkable across runs against the persisted composite. (`bace49f`) + +### Added — trend→newsletter bridge + actionability gate (N7) + +- **Trend→newsletter bridge (MR-F3)** — `/linkedin:newsletter` Step 1 accepts a trend id and pre-fills the brief (angle / target-level / key-points / source-URLs) from the stored candidate; `articles.NN.sourceTrendId` records the provenance (additive-optional, no edition-state schema bump); Step 10 auto-`act`s the source trend on scheduling so the discovery→production loop closes deterministically; Step 2 gains an external fact-package intake path (kilde-så-draft with finished research). `grep -ci trend commands/newsletter.md`: 0 → 18. (`1adb7f4`) +- **F7 band-cap gate (MR-F7)** — a candidate whose reader-grip is explicitly not formulated (`actionability.formulated=false`) is capped to at most `High` regardless of composite. Pure and deterministic; it overrides the composite→band derivation **downward only** (the real composite is preserved), wired into the capture path so the persisted priority is gated. (`1adb7f4`) + +### Landed feedback + +- **MR-F3** (trend→newsletter bridge) — landed @ `1adb7f4`. + ## [0.6.0] - 2026-07-17 **Catch-up release.** Everything since the v0.5.3 tag ships here (28 commits, `git log --oneline v0.5.3..HEAD` is the source of truth), and the sections below also document work that shipped **inside** earlier tags but was never changelogged (see the catch-up note at the end). diff --git a/CLAUDE.md b/CLAUDE.md index 5a015bc..d7f9078 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ -# LinkedIn Studio Plugin (v0.6.0) +# LinkedIn Studio Plugin (v0.7.0) -Full-spectrum LinkedIn content engine — short-form feed posts, carousels, video scripts, and long-form newsletter editions — with the 2026 relevance-ranking model baked in. Maturity v0.6.0: M0 (per-user data dir `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/`, idempotent session-start migration — see `references/data-path-convention.md`) complete; the 29 pre-0.7.0 command surfaces all through the interactive quality-gate (`docs/hardening/log.md`) AND through independent cold-review (29/29, R2a–R5 — `docs/hardening/review*.md`); `/linkedin:trends` (new, 0.7.0-dev) is not yet gated. Remaining for v1.0.0: a GUI. Version history → `CHANGELOG.md`. +Full-spectrum LinkedIn content engine — short-form feed posts, carousels, video scripts, and long-form newsletter editions — with the 2026 relevance-ranking model baked in. Maturity v0.7.0: M0 (per-user data dir `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/`, idempotent session-start migration — see `references/data-path-convention.md`) complete; the 29 pre-0.7.0 command surfaces all through the interactive quality-gate (`docs/hardening/log.md`) AND through independent cold-review (29/29, R2a–R5 — `docs/hardening/review*.md`); `/linkedin:trends` (shipped in 0.7.0) is not yet through the hardening gate. Remaining for v1.0.0: a GUI. Version history → `CHANGELOG.md`. ## Architecture diff --git a/README.md b/README.md index a6c1a4d..d44f6af 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ *AI-generated: all code produced by Claude Code through dialog-driven development. [Full disclosure →](../../README.md#ai-generated-code-disclosure)* -![Version](https://img.shields.io/badge/version-0.6.0-blue) +![Version](https://img.shields.io/badge/version-0.7.0-blue) ![Platform](https://img.shields.io/badge/platform-Claude_Code_Plugin-purple) ![Commands](https://img.shields.io/badge/commands-30-green) ![Agents](https://img.shields.io/badge/agents-19-orange)