Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
790495d
feat(workbench): scaffold new Tailwind/shadcn/TypeScript frontend
KylinMountain Jul 18, 2026
d947249
feat(workbench): wire KB list and Home stats to real /api/v1/kbs
KylinMountain Jul 18, 2026
7a30f92
feat(api): add /api/v1/graph and /api/v1/page endpoints
KylinMountain Jul 18, 2026
ab0bc5f
feat(workbench): wire KbDetail browse tab to real page/list endpoints
KylinMountain Jul 18, 2026
c643cb2
feat(workbench): wire real streaming query/chat with citation page lo…
KylinMountain Jul 18, 2026
91ecc70
fix(workbench): prevent session-adopting navigate from clobbering liv…
KylinMountain Jul 18, 2026
ef48af9
refactor(generator): thread optional credential bundle through skill/…
KylinMountain Jul 18, 2026
d162ee8
feat(api): add /api/v1/deck and /api/v1/skill generate/list/download …
KylinMountain Jul 18, 2026
45ae5ad
feat(workbench): wire deck/skill/graph slash commands to real generat…
KylinMountain Jul 18, 2026
4f2e9b3
feat(workbench): wire KbDetail sources and jobs tabs to real add/watc…
KylinMountain Jul 18, 2026
4bc2318
feat(api): add GET/PATCH /api/v1/kb/config with merge-patch semantics
KylinMountain Jul 18, 2026
8be5259
feat(workbench): wire Settings page to real kb/config endpoint
KylinMountain Jul 18, 2026
933402a
feat(workbench): shell-aware TitleBar, 401 handling, final Kimi-adopt…
KylinMountain Jul 18, 2026
1b61c3a
fix(api): atomic .env write for credential rotation; lock in path-tra…
KylinMountain Jul 18, 2026
78b5954
feat(workbench): Apple token layer + theming infrastructure + motion
KylinMountain Jul 19, 2026
b2efeba
feat(workbench): ambient-ground shell; remove browser title strip
KylinMountain Jul 19, 2026
36d9878
feat(workbench): glass sidebar, larger nav font, bottom settings/vers…
KylinMountain Jul 19, 2026
c74e972
feat(workbench): reflow Home to bottom-pinned input with sessions abo…
KylinMountain Jul 19, 2026
6a52f90
feat(api): surface entities in /api/v1/list
KylinMountain Jul 19, 2026
a75df62
feat(workbench): KbDetail per-type tabs with entities + pagination + …
KylinMountain Jul 19, 2026
0a277e2
feat(workbench): tokenize chat surfaces + ChatInput; spring-animate a…
KylinMountain Jul 19, 2026
fbe9206
feat(workbench): tokenize Settings and connection dialog
KylinMountain Jul 19, 2026
15e808e
feat(workbench): materialize KbList; final token sweep + motion review
KylinMountain Jul 19, 2026
7f2428c
fix(workbench): compile the Apple easing utility; scope KbList transi…
KylinMountain Jul 19, 2026
5d6f116
fix(workbench): dark-mode variants for KbDetail status colors
KylinMountain Jul 19, 2026
af0f918
feat(api): graph HTML endpoint + extract graph endpoints to APIRouter
KylinMountain Jul 19, 2026
6414da2
feat(workbench): ArtifactPanel docked component + getGraphBlobUrl client
KylinMountain Jul 19, 2026
4bab315
fix(workbench): clamp artifact-panel width to viewport + clean up res…
KylinMountain Jul 19, 2026
d85c63a
feat(workbench): open deck/graph in a docked artifact panel (compact …
KylinMountain Jul 19, 2026
656417c
feat(workbench): connector cards → GitHub demand-vote (shared component)
KylinMountain Jul 19, 2026
cea5d57
fix(workbench): dedupe artifact-panel switcher by identity (no duplic…
KylinMountain Jul 19, 2026
fb5b9dd
feat(api): GET /api/v1/meta exposing the real openkb version
KylinMountain Jul 19, 2026
03a3faa
feat(workbench): render fenced code blocks + Mermaid diagrams in mark…
KylinMountain Jul 19, 2026
222df09
feat(workbench): Settings 关于 tab (real version + intro + links)
KylinMountain Jul 19, 2026
909962c
refactor(workbench): declutter sidebar bottom, icon theme toggle, dro…
KylinMountain Jul 19, 2026
5d5a940
feat(workbench): KB Overview stat cards + default to index.md wiki home
KylinMountain Jul 19, 2026
43d1f27
refactor(workbench): stop promoting Obsidian in-app (keep the plain-M…
KylinMountain Jul 19, 2026
59e7ddc
refactor(workbench): drop redundant /ask command (default chat alread…
KylinMountain Jul 19, 2026
c88e539
feat(api): give the Workbench chat agent write_file (delegate to buil…
KylinMountain Jul 19, 2026
3a7c318
feat(api): emit an artifact SSE event when chat write_file produces o…
KylinMountain Jul 19, 2026
73f2d65
feat(api): GET /api/v1/output serves path-validated output/**.html (n…
KylinMountain Jul 19, 2026
d23bf62
fix(api): narrow GET /api/v1/output to output/-only (least privilege …
KylinMountain Jul 19, 2026
dea294f
feat(workbench): file Artifact variant + getOutputBlobUrl + panel wiring
KylinMountain Jul 19, 2026
ace3605
feat(workbench): surface conversationally-written output/**.html as o…
KylinMountain Jul 19, 2026
41787db
fix(workbench): capture kb per file-artifact at fold time (survive mi…
KylinMountain Jul 19, 2026
7a2939f
feat(config): add resolve_effective_config three-layer resolver
KylinMountain Jul 19, 2026
f518c57
refactor(runtime): compile/index core resolves config via resolve_eff…
KylinMountain Jul 19, 2026
eccec92
test(config): make compile-core global-config test exercise convert_d…
KylinMountain Jul 19, 2026
abf5a4b
refactor(runtime): chat/query/linter resolve config via resolve_effec…
KylinMountain Jul 19, 2026
52e4fc2
refactor(runtime): REST query/deck/skill/session resolve config via r…
KylinMountain Jul 19, 2026
2f61591
refactor(runtime): migrate 12 CLI compile/query/chat/lint sites to re…
KylinMountain Jul 19, 2026
ee10e4f
feat(api): kb/config PATCH null removes key (RFC 7386 revert-to-inher…
KylinMountain Jul 19, 2026
422606a
fix(api): kb/config PATCH writes only explicit KB keys (don't materia…
KylinMountain Jul 19, 2026
6706bc3
feat(api): kb/config GET reports effective values + inheritance metadata
KylinMountain Jul 19, 2026
ed100a5
feat(api): add GET/PATCH /api/v1/config global-defaults endpoint
KylinMountain Jul 19, 2026
0149077
fix(api): hold global-config lock across the whole PATCH read-modify-…
KylinMountain Jul 19, 2026
27bf265
feat(web): global-config API client + KbConfig inheritance fields
KylinMountain Jul 19, 2026
3d2120f
refactor(web): PageTypeTabs -> PageList with fixed type prop
KylinMountain Jul 19, 2026
17ea6d2
feat(web): KbOverviewCards become six-card nav with spring layoutId i…
KylinMountain Jul 19, 2026
1a6995d
feat(web): KbSettingsSheet (config inherit/override + moved maintenan…
KylinMountain Jul 19, 2026
aea4c84
fix(web): threshold override rejects non-integer input (no silent rev…
KylinMountain Jul 19, 2026
467fdb8
feat(web): KbDetail card-nav — cards are the tab bar, settings sheet,…
KylinMountain Jul 19, 2026
4bd229f
fix(web): screen-adaptive content widths + clickable wiki-links in th…
KylinMountain Jul 19, 2026
597da18
feat(web): global top-right theme chrome cluster + MotionConfig root
KylinMountain Jul 19, 2026
9bbb29f
fix(web): reserve top-right chrome lane so KbList/KbDetail controls c…
KylinMountain Jul 20, 2026
e60a061
feat(web): global Settings edits global defaults (KB picker + credent…
KylinMountain Jul 20, 2026
4c91dd0
refactor(web): drop dead `large` prop; Home input is 2 rows
KylinMountain Jul 20, 2026
f0f455d
fix(web): parse [[target|alias]] wikilinks; test-guard global scalar-…
KylinMountain Jul 20, 2026
893b877
feat(web): i18n infra (react-i18next) + language switcher + common na…
KylinMountain Jul 20, 2026
4c5b0dc
feat(web): i18n home namespace
KylinMountain Jul 20, 2026
e52a20b
feat(web): i18n kbList namespace
KylinMountain Jul 20, 2026
be540c1
feat(web): i18n kb namespace (KbDetail + overview cards + page list)
KylinMountain Jul 20, 2026
2f6356c
feat(web): i18n kbSettings namespace (per-KB gear sheet + maintenance)
KylinMountain Jul 20, 2026
3a17e0d
feat(web): i18n settings namespace (Settings + About)
KylinMountain Jul 20, 2026
07686f3
feat(web): i18n chat namespace (ChatSession + ChatInput)
KylinMountain Jul 20, 2026
d75dec2
feat(web): i18n artifacts namespace (ArtifactCard + ArtifactPanel)
KylinMountain Jul 20, 2026
5c13a4c
chore(web): i18n full-sweep fixes + leftover-CJK guard
KylinMountain Jul 20, 2026
d5c641a
fix(web): KB reader fills the window on large screens (generous cap +…
KylinMountain Jul 20, 2026
08507cf
fix(web): a11y — KbSettingsSheet modal dialog semantics + ArtifactPan…
KylinMountain Jul 20, 2026
f491a59
feat(workbench): wire New knowledge base create flow + de-dup entries
KylinMountain Jul 20, 2026
9e99708
feat(workbench): interleaved chat trace + drop /compile from palette
KylinMountain Jul 20, 2026
a85e85f
feat(workbench): global default credentials, drop dead footer, UN-lan…
KylinMountain Jul 20, 2026
f92097f
feat(workbench): persist per-turn chat trace so restored sessions kee…
KylinMountain Jul 20, 2026
446338a
fix(workbench): record only read-tool calls in the persisted chat trace
KylinMountain Jul 20, 2026
eb8f4db
feat(workbench): render LaTeX math (KaTeX) and thematic-break rules i…
KylinMountain Jul 20, 2026
ae8523c
fix(workbench): drop the not-yet-live openkb.ai website link from About
KylinMountain Jul 20, 2026
0c85319
fix(workbench): strip wiki frontmatter in the reader (no leading rule…
KylinMountain Jul 20, 2026
fe4562f
fix(config): harden credential .env writes + config resolution (review)
KylinMountain Jul 20, 2026
98885db
fix(chat): atomic wiki write + whitespace-answer + tool-call id fallb…
KylinMountain Jul 20, 2026
bca29d1
fix(web): chat/input correctness fixes (review)
KylinMountain Jul 20, 2026
c9a9692
feat(web): restore GFM links/italic/strikethrough/ordered-lists in Ma…
KylinMountain Jul 20, 2026
2110962
fix(backend): atomic write_wiki_file + _setup_llm_key uses effective …
KylinMountain Jul 20, 2026
dc4c6d4
feat(web): restore stop/abort, document delete, upload progress, GFM …
KylinMountain Jul 20, 2026
f6cfcb2
feat(backend): configurable KB root, custom-path init, union KB disco…
KylinMountain Jul 20, 2026
64f6073
feat(web): surface KB location — create-path preview, custom path, KB…
KylinMountain Jul 20, 2026
341732d
fix(backend): allow Unicode KB names + resolve known_kbs KBs by basename
KylinMountain Jul 20, 2026
9a3a577
fix issue in review
KylinMountain Jul 20, 2026
1b76039
fix(web): translate KbDetail comments to English so i18n guard passes
KylinMountain Jul 20, 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
21 changes: 21 additions & 0 deletions frontend/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
22 changes: 22 additions & 0 deletions frontend/components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": false,
"tsx": true,
"tailwind": {
"config": "postcss.config.js",
"css": "src/index.css",
"baseColor": "slate",
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"registries": {}
}
23 changes: 23 additions & 0 deletions frontend/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
},
])
10 changes: 6 additions & 4 deletions frontend/index.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
<!doctype html>
<html lang="en">
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OpenKB · Knowledge Workbench</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@11/styles/github-dark.min.css" />
<title>OpenKB Studio</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading
Loading