Commit Graph
8882 Commits
Author SHA1 Message Date
dolphin 6f38b5de6d fix(client,platform): ship full pdf.js CMap set so CID-keyed PDFs render text
PDFs produced by CEB-to-PDF converters (government docs) carry non-embedded
CJK fonts keyed by CMap encodings like GBK-EUC-H; pdf.js needs the matching
.bcmap to map glyph ids, otherwise the page renders with no visible text.

- Copy the complete cmaps/ set (169 files, incl. GBK-EUC-H) from pdfjs-dist
  into both apps' static assets via viteStaticCopy, same pattern as
  pdf.worker.min.js.
- client: pass cMapUrl/cMapPacked to both getDocument call sites (file
  preview + knowledge file preview), which previously had no CMap config.
- platform: drop the 3 hand-picked .bcmap files from public/cmaps (missing
  GBK-EUC-H among others); the build now supplies the full set.
2026-07-22 22:27:39 +08:00
GuoQing Zhang 24b97985fe fix(permission): restrict department admin business menus 2026-07-22 18:47:01 +08:00
dolphin b33e84d4f6 Merge branch 'feat/2.6.0-beta4' into feat/2.6.0
# Conflicts:
#	src/backend/bisheng/knowledge/domain/models/knowledge.py
2026-07-21 23:00:39 +08:00
dolphin a604a88263 fix(knowledge): portal space-row right-click menu to body so it anchors to the cursor
The sidebar scroll container has container-type: inline-size, which makes it
the containing block for position:fixed descendants. The context-menu's
invisible fixed trigger was therefore offset from the cursor (visible in the
WeCom WebView; near-invisible in a normal browser only because the container
sits near the viewport origin). Render the whole DropdownMenu via createPortal
to document.body so the trigger's fixed position anchors to the viewport again,
matching the file-card menu. React events still bubble through the component
tree, so the existing stopPropagation guards on the row still hold.
2026-07-21 22:29:43 +08:00
KinyooandClaude Opus 4.8 1f09d98e72 build(client): drive the rspress docs site from the design-token SSOT
design-token.cjs is the single source of truth for client tokens; tailwind.docs.config.cjs layers its tailwindTheme over the app config (app config untouched) for the docs build only. rspress.config wires a docs-only postcss/tailwind pipeline; rspress-overrides.css maps rspress --rp-* chrome tokens + doc typography onto the BiSheng tokens so the spec site renders by its own rules in both themes. .md-only strip loader (MDX rejects the site-hide HTML comments).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 18:06:20 +08:00
KinyooandClaude Opus 4.8 652701b897 feat(client): dark-mode neutral token ramp (arco-gray flips under .dark)
Add the official Arco gray.dark ramp under .dark plus --bg-page (white→#121212). Since the semantic --text/--fill/--border tokens in :root resolve var(--arco-gray-N) lazily, they auto-flip in dark mode app-wide. Neutral only this round; brand + functional dark ramps still pending (known debt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 18:06:20 +08:00
dolphin 0bcac90da5 fix(user): stop leaking password hash and internal columns in user list
GET /api/v1/user/list dumped the full User ORM row in non-simple mode,
exposing password (MD5 hash), password_update_time, and token_version —
none of which the frontend consumes. Strip these sensitive/internal
columns from each entry before returning.
2026-07-21 17:58:35 +08:00
KinyooandClaude Opus 4.8 28af04253c chore(gallery): sync progress trackers with docs-site component coverage
Update GalleryApp wiring and the Button/Color/Confirm/Modal/Typography progress trackers + ProgressOverview.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:50:31 +08:00
KinyooandClaude Opus 4.8 79789f807b fix(client): scope PluginTooltip link styles to stop a global CSS leak
styles.module.css used a bare `a` element selector, which CSS Modules does NOT hash — it leaked a global `a { color: white }` app-wide (and into the docs site), whiting out unstyled links in light contexts. Scope it to `.tooltipHtml a` and apply the class on the injected-HTML container.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:50:31 +08:00
KinyooandClaude Opus 4.8 8a4ad93eb9 build(client): expand rspress docs site (SSG off, more demos, spec strip loader)
Disable SSG (demos pull real components whose deps resolve SSR-only node builds like @dicebear/converter → sharp/resvg we don't install); add Typography/Color/Modal/Confirm/Feedback/Icon/Illustration demos to the nav; exclude 00-总纲 (Claude working charter) from routes+search; nav activeMatch; preEntry regenerator-runtime + rspress-overrides.css (restore document flow so the sticky nav works); filenamify-stub (node:path unbundlable, reached via ~/hooks, never executed); strip-internal-loader.cjs removes internal ledger/changelog sections from spec md pre-MDX so TOC/search stay clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:50:31 +08:00
dolphin c08fb5d997 fix(knowledge): surface individually-authorized department spaces under 部门知识空间
get_user_department_spaces only matched department membership or a
membership row, so a user granted ad-hoc viewer/editor/manager access
(FGA relation only, no membership row) saw the space under 我加入的
instead. Union in the user's FGA-readable spaces intersected with the
department-bound set so they land under 部门知识空间.
2026-07-20 22:32:27 +08:00
GuoQing Zhang 4d2e159fb0 feat(square): sort by unique subscriber count 2026-07-20 17:20:36 +08:00
dolphin 777db083b5 fix: update version 2026-07-20 14:01:09 +08:00
dolphin 3a28e7785c docs: remove leftover dev notes accidentally committed to README 2026-07-20 13:58:54 +08:00
GuoQing Zhang 779d8fb87a fix: worker command error v2.6.0 2026-07-17 20:07:14 +08:00
GuoQing Zhang b9f88c2f6e fix(model): validate workbench embedding selection 2026-07-17 20:02:01 +08:00
GuoQing Zhang fe0740cf17 chore(platform): bump version to 2.6.0 2026-07-17 19:13:31 +08:00
GuoQing Zhang b4eb9fc69c fix(alembic): create missing model tables before upgrades 2026-07-17 18:25:18 +08:00
GuoQing Zhang 07cae3c1f4 chore(backend): sync lockfile project version 2026-07-17 15:45:31 +08:00
GuoQing Zhang eb14ee43b3 fix(brand): return defaults for runtime config 2026-07-17 15:44:55 +08:00
GuoQing Zhang 0cbbe37974 fix(alembic): auto-discover models for fresh databases 2026-07-17 15:39:25 +08:00
GuoQing Zhang bf05265623 fix(alembic): bootstrap schema for fresh databases 2026-07-17 14:40:28 +08:00
GuoQing Zhang 9f18aeae25 fix(alembic): merge v2.6.0 migration heads 2026-07-17 14:18:30 +08:00
GuoQing Zhang dd12964796 ci: change version 2026-07-17 11:34:46 +08:00
GuoQing Zhang 49261d5d63 fix: avoid login tenant context import shadowing 2026-07-17 10:39:51 +08:00
GuoQing Zhang d268e8e8a2 fix(user-group): clean memberships on group deletion 2026-07-16 20:41:11 +08:00
GuoQing Zhang 2c1f32a745 fix(knowledge): unify duplicate file detection 2026-07-16 20:35:54 +08:00
GuoQing Zhang bbbaeda973 fix(mark): prevent invalid assignees from breaking task list 2026-07-16 20:28:21 +08:00
GuoQing Zhang 57a7585c34 fix(platform): restore child admin menu access 2026-07-16 20:06:19 +08:00
GuoQing Zhang 94e2446b1d fix(knowledge): scope duplicate names by type 2026-07-16 20:03:57 +08:00
GuoQing Zhang 37251eca87 fix: show assistant chat error details 2026-07-16 19:54:01 +08:00
GuoQing Zhang e99a75ced8 Merge branch 'feat/2.6.0' of github.com:dataelement/bisheng into feat/2.6.0 2026-07-16 19:39:53 +08:00
GuoQing Zhang 7b6ee8ccdc Merge branch 'feat/2.6.0-beta4' into feat/2.6.0 2026-07-16 19:36:43 +08:00
GuoQing Zhang 85235780c7 Merge branch 'feat/2.6.0-beta4' of github.com:dataelement/bisheng into feat/2.6.0-beta4 2026-07-16 18:15:01 +08:00
GuoQing Zhang f6da266f4f fix(knowledge): widen file name length to 500 2026-07-16 18:11:05 +08:00
KinyooandClaude Opus 4.8 2449931971 build(client): add rspress docs site for the component library
npm run dev:docs / build:docs serve the design specs + live component demos (@rspress/plugin-preview) with the app's vite aliases and style.css mirrored into the rspack config; stubs/url-stub.ts shims Node's url module for the browser bundle. doc_build/ output gitignored.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 18:10:34 +08:00
dolphin cbe8a05c2e fix(platform): make approval management page dark-theme aware
The page styled itself with class names that tailwind.config.js never
defined (text-text-primary, text-text-secondary, text-text-tertiary,
border-border-subtle, bg-background-primary). These emit no CSS, so text
colours came from inheritance and only happened to look right on light
backgrounds. Map them onto the tokens that do exist -- foreground,
muted-foreground, border, card, background -- and add dark variants to the
hardcoded gray/status colours.

Opacity modifiers on `white` are unusable here: tailwind.config.js
overrides white to var(--white), and Tailwind v3 cannot apply an alpha
channel to a CSS variable, so `bg-white/5` is dropped entirely. Use the
gray-50 scale for translucent dark overlays instead.
2026-07-16 17:58:22 +08:00
GuoQing Zhang eba8c735d3 Merge branch 'feat/2.6.0' of github.com:dataelement/bisheng into feat/2.6.0 2026-07-16 17:32:59 +08:00
GuoQing Zhang ac310e6ca5 fix(platform): show tenant admin candidates 2026-07-16 16:59:48 +08:00
GuoQing Zhang 8219f4dfee fix(client): show admin entry for tenant admins 2026-07-16 16:43:17 +08:00
KinyooandClaude Opus 4.8 391d6496d6 chore: gitignore the CoAligne sync config too
The tool overwrites .coaligneignore with its own default template, so tracking it means the rewrite lands in everyone's tree — keep it per-developer alongside .coaligne/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:20:06 +08:00
KinyooandClaude Opus 4.8 f47dacfe61 chore: gitignore CoAligne local state
The .coaligne/ dir holds per-developer project bindings that the tool regenerates (it re-binds and rewrites them on its own), so it should never have been tracked — untrack the two committed state files and ignore the dir.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:16:26 +08:00
KinyooandClaude Opus 4.8 bc71b7c522 chore(gallery): refresh section showcases for the re-derived green ramp
Update GalleryApp wiring and the Button/Color/ConfirmDialog/Feedback/Illustration/Modal/Responsive/Typography showcases.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:04:11 +08:00
KinyooandClaude Opus 4.8 bd6b12fa5f fix(theme): re-derive the green brand ramp around the fixed #169C47 primary
The old .theme-green steps sat at hue ~157 (teal) while --brand-500 is 142, so the main color jumped out of its own ramp. Light steps keep the old saturation/brightness envelope with the hue rotated onto the 500 family (-2/step, mirroring the blue lights); dark steps mirror the blue ramp's dark-side HSV geometry. --brand-500/main unchanged; surface-active-alt re-synced to --brand-50. Values updated in BRAND-THEME-HANDOFF.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:04:11 +08:00
dolphin dc71b41b38 i18n(platform): shorten en-US tenant.management label to "Tenant" 2026-07-15 21:26:30 +08:00
dolphin b83a3b62bc fix(platform): stop bench save buttons being clipped under license banner
The bench 首页/订阅/应用中心 tabs anchor their bottom save buttons with
absolute bottom-1 on CardContent, whose height is tuned via a 100vh-180px
magic constant that assumes no CardContent bottom padding. These tabs kept
CardContent's default p-5 (20px bottom padding) while the working 知识空间
tab uses p-0, so their content ran 20px taller. With slack that overshoot
was absorbed, but when the license-expiry banner appears it consumes the
slack and the buttons spill below the viewport, half-clipped. Add pb-0 to
match the 知识空间 tab.
2026-07-15 21:06:24 +08:00
GuoQing Zhang ab6b54c155 Merge branch 'feat/2.6.0' of github.com:dataelement/bisheng into feat/2.6.0 2026-07-15 20:34:07 +08:00
GuoQing Zhang e4a424758b fix(platform): prevent dismissing duplicate file dialog 2026-07-15 20:33:45 +08:00
LineWalkerandClaude Opus 4.8 559568b4b1 feat(linsight): declare available libraries in code-interpreter description
The code-interpreter tool description said nothing about which Python packages
are available, so the model guessed — reaching for pdfminer.six to read PDFs (a
common default) which is NOT installed in the backend env, producing spurious
"No module named 'pdfminer'" output (it fell back to fitz, but the noise leaked
into the run).

Declare the actually-installed libraries (verified in the backend env: pandas,
numpy, matplotlib, openpyxl / XlsxWriter, python-docx, Pillow, reportlab, PyMuPDF)
and steer PDF reads to `fitz`, away from pdfminer / pdfplumber / PyPDF2. Also tell
the model not to `pip install` (shared, offline env). LocalExecutor only — e2b is
a different sandbox with a different image, not asserted here. Adds a
description-contract regression test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 17:58:13 +08:00
LineWalkerandClaude Opus 4.8 eff01fd31a feat(linsight): declare available libraries in code-interpreter description
The code-interpreter tool description said nothing about which Python packages
are available, so the model guessed — reaching for pdfminer.six to read PDFs (a
common default) which is NOT installed in the backend env, producing spurious
"No module named 'pdfminer'" output (it fell back to fitz, but the noise leaked
into the run).

Declare the actually-installed libraries (verified in the backend env: pandas,
numpy, matplotlib, openpyxl / XlsxWriter, python-docx, Pillow, reportlab, PyMuPDF)
and steer PDF reads to `fitz`, away from pdfminer / pdfplumber / PyPDF2. Also tell
the model not to `pip install` (shared, offline env). LocalExecutor only — e2b is
a different sandbox with a different image, not asserted here. Adds a
description-contract regression test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 17:58:09 +08:00