feat(mcp): upgrade to MCP 2026-07-28 spec (#424)#2
Open
advancedresearcharray wants to merge 158 commits into
Open
feat(mcp): upgrade to MCP 2026-07-28 spec (#424)#2advancedresearcharray wants to merge 158 commits into
advancedresearcharray wants to merge 158 commits into
Conversation
Add --format skill for rules export and sync. Generates SKILL.md content for agents to search the wiki via kiwi_search/kiwi_read, writes .cursor/skills/team-wiki/SKILL.md on export, and exposes format=skill on the rules API. Closes kiwifs#155. Co-authored-by: advancedresearcharray <advancedresearcharray@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…s#224) Add tasks.json kanban workflow with WIP limits and task.md template for UC-1 agent task orchestration. Document workflow in SCHEMA.md and verify via init test. Closes kiwifs#145 Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
) Agent-facing task lifecycle helpers for the default tasks workflow (kiwifs#148, kiwifs#149). Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Closes kiwifs#156. Boots pkg/kiwi + in-process MCP client, exercises write/read/search/tree/delete/rename end-to-end. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…ontent (kiwifs#228) The `before` slice used `content[:idx+after+nextH2]` which double-counted the `idx` offset (since `after` already includes `idx`). This caused content duplication when a task file had H2 sections after ## Progress. Rewrite to directly compose: header + existing progress + new entry + tail. Add edge-case tests covering multi-H2 documents, empty content, long messages, and YAML-special characters in task titles. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
) Resolve blocked-by (and blocked_by) refs against page metadata, surface blocked state with blocker titles on board cards, grey lock styling, and prevent dragging blocked cards into in_progress (API + UI). Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…LETE (kiwifs#229) Signed-off-by: Bobby <boby@codelabs.co.id> Co-authored-by: Bobby <boby@codelabs.co.id>
…ifs#231) - Register days_ago(n) compiling to datetime('now', '-n days') - Add --infer-schema on kiwifs import for csv/json/jsonl sampling - Add knowledge/README.md for docker-compose.dev sample root Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Mount contrib/dev-knowledge, connect backend to pgvector, add MCP HTTP service on 8181, and document endpoints in CONTRIBUTING.md. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
SampleJSONRows was converting all JSON values to strings via fmt.Sprint, which turned null into "<nil>", arrays into "[a b]", and objects into "map[...]". The string-based InferFieldTypes then misclassified these as "string" instead of the correct types. Add SampleJSONRowsNative and InferFieldTypesNative that work with map[string]any directly, correctly inferring integer, number, boolean, array, and object types from JSON/JSONL sources. CSV inference is unchanged (string-based is correct for CSV). Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…kiwifs#242) Fixes kiwifs#240 Two bugs in cmd/update.go prevented `kiwifs update` from working: 1. assetNameForPlatform() generated "kiwifs_linux_amd64" (underscores) but goreleaser v2 produces "kiwifs-linux-amd64" (hyphens). The strings.Contains check never matched, so the command always reported "No binary found". 2. runUpdate() wrote the raw .tar.gz/.zip archive bytes directly as the new executable instead of extracting the kiwifs binary from inside the archive. Fix: use hyphens in the asset name to match actual release assets, and add extractBinary() to unpack .tar.gz (Linux/macOS) or .zip (Windows) archives before writing the binary. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: deltasquare4 <deltasquare4@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
kiwifs#244) The kiwifs binary inside goreleaser archives is named "kiwifs-darwin-arm64" (with platform suffix), not just "kiwifs". extractBinary() only matched the exact name "kiwifs", causing extraction to fail even after the asset URL was found correctly. Add isKiwifsBinary() that matches "kiwifs", "kiwifs.exe", and any "kiwifs-*" or "kiwifs_*" variant. Add comprehensive unit tests for assetNameForPlatform(), isKiwifsBinary(), and extractBinary() covering tar.gz, zip, subdirectories, and missing-binary edge cases. Verified end-to-end: built with version 0.0.1, ran `kiwifs update`, binary successfully updated to v0.19.17. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Add --save-schema to persist --infer-schema output as .kiwi/schemas/<name>.json. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Factor record conversion into a pure helper so it can be tested without calling the live Sheets API. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
* Add field mapping step to import wizard (kiwifs#142) Introduce field_mappings on preview/import APIs with rename, skip, and type coercion in the importer. Add a wizard step between configure and preview for structured sources so users can map columns before previewing five sample pages. Co-authored-by: Cursor <cursoragent@cursor.com> * feat(import): infer field types from sample rows in wizard Add POST /import/infer-fields and upload infer-fields mode so the field mapping step uses backend schema inference (up to 100 rows) instead of a single-row client guess. Complements kiwifs#142 and addresses the UI gap in kiwifs#141. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Use ajs-page-id to map HTML pages onto entities.xml hierarchy and avoid title collisions by disambiguating duplicate slugs per parent. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
) Rewrite attachment src/href targets in HTML exports to local _assets paths, associate attachment files with their page directory, and convert Confluence storage-format attachment refs into markdown links/images. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…s, panel macro (kiwifs#247) * fix(import): use basename for save-schema path and fix wizard file upload routing Two bugs found during deep testing: - --save-schema with absolute file path (e.g. /tmp/data.csv) used the full path as schema name, causing "no such file or directory" when writing to .kiwi/schemas/tmp/data.json. Now uses filepath.Base() to extract just the filename. - Import wizard step 2 had a duplicate UPLOADABLE_SOURCES condition that matched before the UploadableSourceForm branch, causing CSV/JSON/JSONL/ YAML/Excel/SQLite sources to render the database connection form (Host/ Port/Database) instead of the file upload drop zone. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(import): write binary attachments as raw files and add img tag conversion Two additional bugs found during deep Confluence import testing: - Binary attachments (images, PDFs) were wrapped in frontmatter and saved as .md files. The import pipeline now checks _is_binary and writes raw bytes without the .md extension or frontmatter. - The convertNodeWithPlaceholders function was missing an img case, causing <img> tags to be silently dropped during HTML-to-markdown conversion. Added img handling to produce  output. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(import): use innerHTMLToMarkdown for panel macro content Panel macro content was rendered as raw HTML inside blockquote prefix, causing text to fall outside the blockquote after HTML-to-markdown conversion. Now uses innerHTMLToMarkdown (matching admonition macros) to convert HTML body before applying the blockquote prefix. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ifs#249) Map internal HTML hrefs to hierarchy-based [[wiki]] links during import and add a minimal export fixture for regression tests. Closes kiwifs#153. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…ring (kiwifs#261) Define lifecycle status constants, index memory_status in file_meta, exclude superseded pages from default FTS search, and document the field. Closes kiwifs#252. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…ion (kiwifs#262) Flag pages whose expires_at is in the past or whose ttl has elapsed, and document the conventions. Closes kiwifs#253. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
…wifs#263) Expose a check subcommand with stable exit codes (0/1/2) over the existing janitor scan, plus --fail-on warn for stricter pipelines. Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com>
* Add memory_status frontmatter indexing and search filtering Define lifecycle status constants, index memory_status in file_meta, exclude superseded pages from default FTS search, and document the field. Closes kiwifs#252. Co-authored-by: Cursor <cursoragent@cursor.com> * feat(mcp): add kiwi_remember and kiwi_forget memory tools kiwi_remember writes episodic files under episodes/{date}/{id}.md with conventional frontmatter. kiwi_forget marks pages superseded via memory_status without deleting content. Closes kiwifs#254 and kiwifs#255. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: root <root@thirtynince.local> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
…kflow (kiwifs#405) * feat(workspace): ship research library init template with reading workflow Replace legacy literature/experiments scaffold with UC-9 layout: papers/, notes/, reviews/, reading workflow, and paper JSON Schema. Adds regression tests for workflow transitions and schema validation. Closes kiwifs#334 Signed-off-by: Array Fleet <fleet@advancedresearcharray.local> Co-authored-by: Cursor <cursoragent@cursor.com> * fix(workspace): harden research template schema and regression tests Require workflow/state in paper.json, ship research config with cites typed_fields, add lint and metadata tests per peer review for kiwifs#334. Signed-off-by: Array Fleet <fleet@advancedresearcharray.local> Co-authored-by: Cursor <cursoragent@cursor.com> * docs(episodes): hands-on delivery verification for issue kiwifs#334 Confirm research library init template with reading workflow passes workspace regression tests after overlay git index recovery. Signed-off-by: advancedresearcharray <advancedresearcharray@github.com> Co-authored-by: Cursor <cursoragent@cursor.com> * docs(episodes): hands-on takeover verification for PR kiwifs#405 Document delivery after overlay git index corruption from mixed branding takeover left research template reverted in staging area. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(workspace): peer-review hardening for research template tests Extend regression coverage for cross-cited example papers, backward reading workflow transitions, and invalid paper frontmatter. Document backward transitions in SCHEMA and playbook. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Signed-off-by: Array Fleet <fleet@advancedresearcharray.local> Signed-off-by: advancedresearcharray <advancedresearcharray@github.com> Co-authored-by: Array Fleet <fleet@advancedresearcharray.local> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: advancedresearcharray <advancedresearcharray@github.com>
…ifs#406) Adds `kiwifs init --template adr` to scaffold a MADR-format Architecture Decision Record workspace with workflow, JSON schema, blank template, example ADR, and agent playbook. Co-authored-by: Cursor <cursoragent@cursor.com>
… knowledge→memory, prompt-library→prompt (kiwifs#408) Template alignment with wiki use cases: - UC-1 Knowledge Base: new `kb` template with article types, verification workflow, freshness enforcement - UC-3 Structured Data Query: new `data` template with collections, DQL dashboards, chart blocks - UC-4 Headless CMS: new `cms` template with blog, docs, pages, editorial workflow, feeds - UC-10 Event Log: new `log` template with append-only entries, event taxonomy, daily partitioning - UC-5 Agent Memory: renamed `knowledge` → `memory` (with migration error for old name) - UC-8 Prompt Library: renamed `prompt-library` → `prompt` (with migration error for old name) - UC-11 Agent Task Orchestration: renumbered from UC-1 All templates include: index.md, playbook.md, SCHEMA.md, .kiwi/ config, schemas, and workflows. Tests updated across workspace, cmd, and spaces packages. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: align templates with use cases — add kb, cms, data, log; rename knowledge→memory, prompt-library→prompt Template alignment with wiki use cases: - UC-1 Knowledge Base: new `kb` template with article types, verification workflow, freshness enforcement - UC-3 Structured Data Query: new `data` template with collections, DQL dashboards, chart blocks - UC-4 Headless CMS: new `cms` template with blog, docs, pages, editorial workflow, feeds - UC-10 Event Log: new `log` template with append-only entries, event taxonomy, daily partitioning - UC-5 Agent Memory: renamed `knowledge` → `memory` (with migration error for old name) - UC-8 Prompt Library: renamed `prompt-library` → `prompt` (with migration error for old name) - UC-11 Agent Task Orchestration: renumbered from UC-1 All templates include: index.md, playbook.md, SCHEMA.md, .kiwi/ config, schemas, and workflows. Tests updated across workspace, cmd, and spaces packages. Co-authored-by: Cursor <cursoragent@cursor.com> * feat(demo): interactive template gallery on demo.kiwifs.com 11 template demos (kb, wiki, tasks, data, cms, memory, runbook, adr, prompt, research, log) each with rich mock content showcasing charts, progress bars, tabs, columns, mermaid diagrams, color palettes, kiwi-app embeds, and theme presets. - New Vite entry point (demo.html + vite.demo.config.ts) wrapping App with MockApiProvider and per-template overrides - DemoGallery landing page with template cards and theme toggle - DemoShell applies theme preset, branding, and mock data per template - Extended apiMock with fileContents, queryRows, timelineEvents, uiConfig - treeFromPages helper builds sidebar tree from flat page map - copy-demo-routes.mjs creates /kb/, /wiki/, etc. index.html for clean URLs - Deploy workflow builds demo + storybook into GitHub Pages (_site/) Co-authored-by: Cursor <cursoragent@cursor.com> * fix: remove unused imports (React, fs) breaking tsc build Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…radients (kiwifs#414) - Hero section with KiwiFS tagline, description, and mascot - Storybook, Docs, GitHub as prominent pill-style links in header - Template cards with colored gradient headers matching theme presets - Arrow-right hover animation on cards - Proper footer with branding Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…imary (kiwifs#415) The chartreuse primary at bg-primary/10 was too vivid in dark mode, rendering as a garish bright-yellow pill that obscured surrounding text. Switch to bg-muted + text-muted-foreground for a subtler, theme-neutral look. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Anh Lam <amelia751@users.noreply.github.com>
) kiwi_workflow_advance rebuilt frontmatter with a broken yamlMarshal shim, which auto_sequence then replaced with only adr_number. Use SetFrontmatterField instead and sync status with state for ADR pages. Closes kiwifs#328 Co-authored-by: Array Fleet <fleet@advancedresearcharray.local>
* feat(ui): add link-type filter controls to graph view Closes kiwifs#340. Filter graph edges by typed link relation (cites, contradicts, etc.) with multi-select chips, session persistence, and node dimming for non-matching pages. * fix(ui): restore toolbarViews type removed during graph filter work The issue-340 cherry-pick accidentally dropped toolbarViews from the ui-config response type; restore it so uiConfigStore stays typed correctly. Co-authored-by: Cursor <cursoragent@cursor.com> * docs(episodes): record issue-340 graph link-type filter delivery Episodic run log for clean cherry-pick onto origin/main and toolbarViews fix. Durable fix doc updated on Kiwi depot (pages/fixes/...). Co-authored-by: Cursor <cursoragent@cursor.com> * docs(episodes): hands-on verification for issue-340 graph link-type filter Record test verification, PR kiwifs#409, and delivery checklist after fleet agent failed delivery check. Co-authored-by: Cursor <cursoragent@cursor.com> * feat: mkdocs export * fix(ui): harden graph link-type filter after peer review Reconcile session filter with current graph relations, derive relation chips from resolved links only, and respect relation filter in path-finder adjacency to avoid stuck dimmed graphs and misleading paths. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): sanitize graph relation metadata after peer review Validate API and sessionStorage relation strings with the same rules as backend typed-link fields, reject unknown types in filter matching, and expand kiwiGraphFilters regression coverage to 25 tests. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Array Fleet <fleet@advancedresearcharray.local> Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(reader): apply workspace theme and branding to published pages Published /p/* HTML now reads .kiwi/theme.json (cached by mtime) and [ui.branding] for CSS tokens, favicon, document title prefix, and footer logo. Reader CSS variables align with the main app token names. Closes kiwifs#348. * docs(episodes): record issue-348 reader theme delivery verification Co-authored-by: Cursor <cursoragent@cursor.com> * docs(episodes): hands-on delivery verification for issue-348 reader theme Record verified test pass and clean rebase onto origin/main after restoring accidentally emptied mkdocs.go. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(readertheme): sanitize theme.json token keys against CSS injection Validate custom-property names before emitting CSS overrides on published reader pages. Adds TestBuildCSS_RejectsUnsafeKeys regression test. Co-authored-by: Cursor <cursoragent@cursor.com> * docs(episodes): link PR kiwifs#407 in issue-348 hands-on delivery log Co-authored-by: Cursor <cursoragent@cursor.com> * test(api): peer-review hardening for published reader theme Add HTTP regression tests for dark/system theme modes, invalid theme.json fallback, and HTML-only theme injection to close peer-review gaps on PR kiwifs#407. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Array Fleet <fleet@advancedresearcharray.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Closes kiwifs#326 Configurable [janitor.execution_staleness] flags runbooks with stale date frontmatter or matching flag_values (e.g. last_outcome=failure). Wired through kiwifs check, scheduled janitor, and GET /api/kiwi/janitor. Includes config.toml examples, UC-6 docs, and edge-case regression tests. Co-authored-by: Array Fleet <fleet@advancedresearcharray.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…iwifs#418) Replaces legacy runbook init scaffold with UC-6 DevHelm format: 7-section example runbook, JSON Schema validation, blank template, MCP playbook, and regression tests including kiwifs check integration. Co-authored-by: Cursor <cursoragent@cursor.com>
…sues - Mark UC-6 (kiwifs#325, kiwifs#326, kiwifs#327), UC-7 (kiwifs#328-kiwifs#330), UC-8 (kiwifs#331-kiwifs#333), UC-9 (kiwifs#334-kiwifs#336, kiwifs#340), UC-10 (kiwifs#337-kiwifs#339), and cross-cutting (kiwifs#322-kiwifs#324) as Done - Mark UC-3 kiwifs#140 (temporal DQL) as Done - Add new "New Features" section with 9 fresh issues (kiwifs#420-kiwifs#428) from June 2026 industry research - Link UC-5 recall to new kiwifs#422 Co-authored-by: Cursor <cursoragent@cursor.com>
…wifs#439) The Table of Contents sidebar had no max-height constraint, causing long heading lists to overflow offscreen without any way to scroll. Adds max-h-[calc(100vh-6rem)] and overflow-y-auto so the nav stays within the viewport and becomes independently scrollable. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
- ROADMAP.md: mark webhooks done, add v0.5 shipped features (workflows, schemas, 12 templates, widgets, tasks, publishing, etc.), bump RBAC to v0.6 - FAQ.md: update version to v0.19.x, add workflows/templates/widgets/publishing section, update export formats - EXAMPLES.md: add template, widget, workflow, task orchestration, publishing examples - ARCHITECTURE.md: update system diagram, write pipeline (9 steps), source tree (12 new packages), frontend deps - LAYOUT.md: add 7 new toolbar views (bases, canvas, whiteboard, kanban, timeline, data, analytics) - wiki/Home.md: fix UC-1 → Knowledge Base, add UC-11 Task Orchestration - wiki/Roadmap.md: fix UC table, update foundation roadmap - wiki/UC-6 through UC-10: mark shipped milestones as done, update MCP tool count
) Adds a "My Notes" feature that renders personal annotations from .local/<filename>.md as a collapsible section below page content. Backend: GET /api/kiwi/local-note?path=<page-path> reads directly from .local/ on disk, bypassing the hidden-dir filter. Returns 404 if no companion note exists. Frontend: KiwiPage fetches the local note and renders it using the same ReactMarkdown pipeline (Shiki highlighting, widgets, etc.) in a visually distinct CollapsibleFooterSection. Privacy: .local/ remains excluded from tree/search/file APIs. Notes only exist on the user's disk (gitignored) and are only accessible through this explicit local-only endpoint. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
The previous height was too generous — nearly full viewport — making the ToC look messy and the last items hard to reach. 60vh keeps it contained while still showing plenty of headings. Co-authored-by: Cursor <cursoragent@cursor.com>
Adds a generic local-state persistence layer and a page completion tracker widget for kiwifs workspaces. Backend: - GET/PUT /api/kiwi/local-state?name=<id> reads/writes JSON files in .local/<name>.json — private state that never enters git or the standard file/search/tree APIs. Frontend: - api.getLocalState / api.putLocalState client methods - PageTracker widget: derives folder groups from the tree, renders checkboxes with per-group progress bars. Completion state persists to .local/progress.json via local-state API. - Embeddable via ```widget:tracker in any markdown page. Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
Frontmatter fields containing http/https URLs (e.g. leetcode: https://...) were rendered as plain text. Now they render as clickable <a> tags that open in a new tab. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
- README: add "Live Demos" link in top nav and new section with table linking all 11 template demos at demo.kiwifs.com - Wiki Home: add Live Demos + Storybook to Resources section - Each UC page (UC-1 through UC-11): add "Live demo" link after label Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
kiwifs#443) Personal state directory renamed from .local/ to .me/ — clearer semantics that align with the /me/ API concept (storage-agnostic, auth-aware). API routes: /me/note, /me/state (GET/PUT) Frontend: api.readMyNote, api.getMyState, api.putMyState CSS: .kiwi-my-notes-section Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
…anel (kiwifs#444) - Selection toolbar: select text on any page → click bookmark icon → pick color - Five highlight colors: yellow, blue, pink, green, purple - Highlights stored in .me/bookmarks.json via /me/state API (personal, never shared) - Toolbar panel: "Highlights" button in header opens full-page notebook view - All highlights aggregated across pages, grouped by page - Filter by color - Click any highlight to navigate to the source page - Add/edit notes on highlights, delete highlights - Extends existing highlights.ts with wrapBookmark() for colored DOM wraps - Renders highlights on page load via the same anchor system as comments Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local> Co-authored-by: Cursor <cursoragent@cursor.com>
- Move KiwiComments out of CollapsibleFooterSection so the floating "+Comment" button appears on text selection even with zero comments. - Add ::selection styling using the primary/kiwi color (40% light, 55% dark). Co-authored-by: Cursor <cursoragent@cursor.com>
Add transport wrapper for server/discover, Mcp-Method/Mcp-Name routing headers, and ttlMs/cacheScope on list responses while preserving legacy initialize clients and stateless session handling. Closes kiwifs#424 Co-authored-by: Cursor <cursoragent@cursor.com>
Upgrade tools/list responses with draft/2020-12 $schema metadata and add regression test for MCP 2026-07-28 acceptance criteria. Co-authored-by: Cursor <cursoragent@cursor.com>
Document the transport wrapper approach, regression tests, and hands-on delivery verification for issue kiwifs#424. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
wrapMCP2026HTTP middleware around Streamable HTTP to support MCP 2026-07-28 whilemcp-goremains on 2025-11-25server/discover,Mcp-Method/Mcp-Namerouting headers, andttlMs/cacheScopeon list/read responsestools/listinput schemas with JSON Schema 2020-12$schemametadatainitializeclients and stateless transport (noMcp-Session-Id)Upstream PR target: kiwifs#424
Test plan
go test ./internal/mcpserver/ -run 'MCP2026|EnhanceList|ParseMCP|BuildDiscover' -v -count=1— 11/11 PASSgo test ./internal/api/ -run MCP -v -count=1— PASSMade with Cursor