Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
56950fd
Serve logo from active Link root
gowtham0992 May 25, 2026
fd985dd
Clarify Link surfaces are independent
gowtham0992 May 25, 2026
4d884a3
Improve first-run and company readiness
gowtham0992 May 25, 2026
22d1d16
Throttle MCP cache mtime checks
gowtham0992 May 25, 2026
01863e5
Polish README product opening
gowtham0992 May 25, 2026
cede09d
Add Windows PowerShell installers
gowtham0992 May 25, 2026
59598fb
Add MCP agent connect command
gowtham0992 May 26, 2026
ccb86b3
Add before-after proof loop to docs
gowtham0992 May 26, 2026
903f2cf
Add scheduled memory review dates
gowtham0992 May 26, 2026
13e44b5
Add Obsidian vault import
gowtham0992 May 26, 2026
4c2a49e
Add compliance audit export
gowtham0992 May 26, 2026
4b909f5
Broaden local secret detection
gowtham0992 May 26, 2026
c11e8df
Add Git team sync guidance
gowtham0992 May 26, 2026
6b5f73d
Add expiring memories
gowtham0992 May 26, 2026
aff60cb
Add local page sharing
gowtham0992 May 26, 2026
0c388a7
Add memory changelog
gowtham0992 May 26, 2026
a1b11f9
Add memory wins proof surface
gowtham0992 May 26, 2026
3bd94ab
Add team security review docs
gowtham0992 May 26, 2026
bd5d4ca
Add read-only wiki snapshot export
gowtham0992 May 26, 2026
ae80314
Tighten team sync memory sharing gate
gowtham0992 May 26, 2026
97a4eca
Add explicit memory visibility controls
gowtham0992 May 26, 2026
7f37da9
Document Link memory contract
gowtham0992 May 26, 2026
b393d12
Document integration maintainer workflow
gowtham0992 May 26, 2026
8bd19a2
Document Link scale model
gowtham0992 May 26, 2026
73ea746
Add memory visibility update command
gowtham0992 May 26, 2026
6337850
Scan wiki pages for secret values
gowtham0992 May 26, 2026
1c20afb
Summarize memory log changes
gowtham0992 May 26, 2026
e8641b5
Add safe backup restore command
gowtham0992 May 26, 2026
925eec1
Prefer lnk CLI command
gowtham0992 May 31, 2026
598b9c1
Keep CLI guidance mode-aware
gowtham0992 May 31, 2026
5cad0db
Initialize fresh installer wikis safely
gowtham0992 May 31, 2026
99979fc
Fix Windows CI for lnk alias branch
gowtham0992 May 31, 2026
0df258b
Merge pull request #31 from gowtham0992/issue/29-lnk-alias
gowtham0992 May 31, 2026
c40738a
Add official CLI skills
gowtham0992 May 31, 2026
a49cf04
Merge pull request #32 from gowtham0992/issue/30-official-skills
gowtham0992 May 31, 2026
c8a4b53
Polish docs after skills path
gowtham0992 May 31, 2026
3edf13b
Prepare 1.4.0 release
gowtham0992 Jun 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,11 @@ jobs:
- name: Install MCP package for verification
run: python -m pip install ./mcp_package

- name: Run portability tests
run: python -m unittest tests.test_mcp_verify_core tests.test_web_http_core tests.test_release_hygiene tests.test_cli_parser_core tests.test_cli_runtime_core
- name: Install test runner
run: python -m pip install "pytest>=8,<10"

- name: Run broad Windows tests
run: python -m pytest tests -q --ignore=tests/test_installers.py --ignore=tests/test_serve.py --ignore=tests/test_large_wiki_smoke.py

- name: Demo value-loop smoke test
shell: pwsh
Expand Down Expand Up @@ -112,6 +115,13 @@ jobs:
- name: Check shell syntax
run: bash -n integrations/*/install.sh integrations/*/uninstall.sh integrations/_shared/*.sh

- name: Check PowerShell syntax
shell: pwsh
run: |
Get-ChildItem integrations -Recurse -Include *.ps1 | ForEach-Object {
[scriptblock]::Create((Get-Content -Raw $_.FullName)) | Out-Null
}

release-hygiene:
runs-on: ubuntu-latest
steps:
Expand Down
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,45 @@ Release sections use `MAJOR.MINOR.PATCH` versions that match `link-mcp` on PyPI

## [Unreleased]

## [1.4.0] - 2026-06-14

### Added

- Added official CLI skills under `skills/` so agents can lazy-load Link workflows without MCP setup.
- Added `lnk try` as a one-command demo proof loop that creates the demo, checks readiness, runs query/brief examples, and prints first agent prompts.
- Added `lnk connect <agent>` to preview or write MCP client config for Codex, Kiro, Claude Code, Cursor, Antigravity, VS Code, and Copilot.
- Added Windows PowerShell installers for Codex, Kiro, Claude Code, Cursor, Antigravity, VS Code, and Copilot.
- Added optional `review_after` dates for durable memories so time-sensitive context can automatically return to the memory inbox for re-checking.
- Added optional `expires_at` dates for durable memories so temporary context automatically leaves default recall after expiry.
- Added `lnk import-obsidian <vault>` to copy Obsidian Markdown notes into `raw/obsidian/` with secret scanning before the normal ingest workflow.
- Added `lnk compliance-export` for redacted readiness, validation, memory-review, operation, and log exports for team or security review.
- Added `lnk restore-backup` to preview and confirm local backup restores with unsafe-tar checks, raw restore opt-in, and pre-restore safety backups.
- Added `lnk team-sync` to print a safe Git sharing plan for reviewed team memory without pushing private raw sources automatically.
- Added `lnk share <page-or-memory>` to print a local viewer permalink and agent prompt for a specific Link page.
- Added `lnk snapshot` to export a static, read-only HTML snapshot for demos or reviews while excluding raw sources, captures, live state, and memory pages by default.
- Added memory `visibility` metadata (`private`, `project`, or `team`) so team sharing can rely on explicit user intent instead of inferring privacy from scope alone.
- Added `lnk set-memory-visibility` and MCP `set_memory_visibility` so existing memories can move between private, project, and team sharing intent after explicit user approval.
- Added `lnk memory-log`, MCP `memory_log`, `/memory-log`, and `/api/memory-log` for recent memory lifecycle changes without exposing raw source or memory bodies.
- Added privacy-safe memory-log change summaries so review, status, and visibility transitions are visible without exposing memory bodies.
- Added `lnk wins`, MCP `memory_wins`, `/wins`, and `/api/wins` for local, non-telemetry proof signals about what Link memory is carrying.
- Added a team security review docs page covering local deployment, data boundaries, memory approval gates, Git sharing, audit exports, and current limits.
- Added a memory contract docs page that explains the stable MCP agent loop, tool groups, write rules, budget behavior, and sharing semantics.
- Added an integration maintainer checklist covering installer invariants, new-agent steps, PowerShell parity, and validation commands.
- Added a scale model docs page covering bounded defaults, benchmark/health checks, large-wiki habits, and current local limits.
- Added `python -m link_mcp --version` so MCP package installs can be verified before a wiki exists.
- Added an Obsidian guide for opening Link's Markdown wiki as a vault and rebuilding indexes after manual edits.
- Added validation and doctor failures for secret-looking values already present in wiki pages so local UI and MCP context do not quietly serve manually introduced secrets.

### Changed

- Broadened local secret detection for common modern provider tokens and credentials before capture, ingest, Obsidian import, and doctor scans.
- Changed the installed CLI command from `link` to `lnk` to avoid the POSIX/macOS `link` utility collision while preserving source-checkout `python3 link.py ...` usage.
- Tightened `lnk team-sync` readiness so unreviewed memories or active `visibility: private` memories block "ready" status before Git sharing.
- Tightened `lnk snapshot --include-memories` so private memories stay excluded unless `--include-private-memories` is explicitly passed.
- Broadened Windows CI from a small portability subset to most non-installer/non-server tests.
- Clarified that the Homebrew formula lives in the separate `gowtham0992/homebrew-link` tap.
- Tightened security reporting guidance to prefer private maintainer contact before public GitHub issues.

## [1.3.0] - 2026-05-22

### Added
Expand Down
3 changes: 3 additions & 0 deletions LINK.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ type: memory
title: "Short Memory Title"
memory_type: preference | decision | project | fact | note
scope: user | project | global
visibility: private | project | team
project: "optional-project-slug"
status: active | stale | archived
date_captured: "2026-04-09T14:30:00Z"
Expand All @@ -178,6 +179,7 @@ update_count: 0
source: "manual | conversation | mcp | raw/source.md"
last_update_source: ""
review_status: pending | reviewed | needs_update
review_after: "optional YYYY-MM-DD date for scheduled re-check"
tags: [memory, relevant-tag]
---

Expand Down Expand Up @@ -287,6 +289,7 @@ Rules:
- Keep memories specific and actionable. "User likes quality" is too vague; "User prefers release/* branches over codex/* branches" is useful.
- Use `memory_type: preference` for user preferences, `decision` for choices made, `project` for project context, `fact` for stable facts, and `note` for everything else.
- Use `scope: user` for broad personal preferences, `project` for the current project, and `global` for agent-wide principles.
- Use `visibility: private` for personal memory, `project` for project-team sharing, and `team` only when the human explicitly wants the memory shared across a team workspace. If omitted, Link treats user/global memories as private and project memories as project-visible.
- For `scope: project`, include a project key when you know it. `link.py` infers this from repo-local installs; otherwise pass `--project <slug>` or MCP `project`.
- At the start of a session or substantial task, run `python3 link.py brief "<task or question>" .` or MCP `memory_brief` when available. Treat this as the default way to prime yourself with local memory, review warnings, and saved raw capture status.
- For long chat/session notes, prefer `python3 link.py capture-session "<file-or-text>" .` or MCP `capture_session`; it stores the raw note locally and returns proposal-only memory candidates. If you do not need to keep the raw note, run `python3 link.py propose-memories "<file-or-text>" .` or MCP `propose_memories` instead. Do not write proposals until the human confirms.
Expand Down
Loading
Loading