Commit Graph

9 Commits

Author SHA1 Message Date
Innei 2c5faed6c6 🐛 fix(theme): compose ConfigProvider outside ThemeProvider in every shell (#19457)
* 🐛 fix(theme): compose ConfigProvider outside ThemeProvider in every shell

Claude-Session: https://claude.ai/code/session_019rSFnGHUE9kq3LMCUxugzR

* ♻️ refactor(motion): always render through LazyMotion's m, never the full motion runtime

Claude-Session: https://claude.ai/code/session_019rSFnGHUE9kq3LMCUxugzR
2026-09-12 03:47:01 +08:00
Innei 48c61be524 🔥 chore(theme): remove AntdStaticMethods now that nothing renders through antd static APIs (#19458)
Claude-Session: https://claude.ai/code/session_019rSFnGHUE9kq3LMCUxugzR
2026-09-12 02:40:29 +08:00
Arvin Xu 9a71b5e0d4 ♻️ refactor: organize acceptance viewer and improve mobile flow review (#19290) 2026-09-08 23:09:04 +08:00
Innei f32a4eb9c5 ♻️ refactor: migrate ActionIcon, Avatar, Tag and Text to @lobehub/ui/base-ui (#18729)
The antd-based wrappers are deprecated since @lobehub/ui@5.33.0. This moves every call site to the base-ui subpath.

Beyond the import path, the migration required:

- ActionIcon now renders a native <button> instead of a div: dropped the hardcoded 'nativeButton: false' in ActionDropdown's trigger props (it overrode the library's own inference, so Base UI applied role/aria-disabled to a real button), and retyped the dictation control refs to HTMLButtonElement
- Avatar is no longer antd's: replaced src/icon with avatar, dropped gap (no equivalent)
- Tag is no longer antd's: dropped bordered={false}, which antd v6 already ignored whenever variant was set — and the wrapper always set it
- prop types (ActionIconProps, AvatarProps) now come from the base-ui subpath, since the legacy ones carry antd props and a div ref
- seven files that still imported Button from @lobehub/ui or antd are migrated too, since touching them surfaced the existing no-restricted-imports error: variant=filled -> type=fill, variant=outlined + color=default -> type=default

Verified: type-check clean, 503 tests pass across ChatInput/NavPanel/User, and the migrated surfaces render with no Base UI warnings.
2026-08-27 15:43:45 +08:00
Arvin Xu 7c559cbd4d ♻️ refactor(acceptance): move features/Verify to features/Acceptance (#18703)
The product surface is the Acceptance domain: every route is /acceptance, and what lived under features/Verify was either the acceptance page itself or one of its sub-objects — a round's report, the in-chat round card, the criteria editor. 'Verify' no longer named anything of its own, and the page sat at features/Verify/Acceptance, one level deeper than its siblings.

New layout, grouped by sub-object instead of nesting Acceptance/Acceptance:
- Viewer/        the acceptance page atoms (was Verify/Acceptance)
- Workspace/     the acceptance list panel (was Verify/Acceptance/Workspace) + useReportPanelExpand
- Report/        ReportViewer and the evidence/visualization renderers (was Verify/components)
- Run/           RunResult and CheckerDock, the in-chat round card
- CriterionList/, hooks, utils, routeMeta unchanged at the root

Removes the dead VerifyWorkspace / ReportListPanel / EmptyDetail trio (zero consumers since AcceptanceWorkspace replaced it). Pure move otherwise: git detects 90 renames; imports rewritten across src, apps/workbench and packages, plus the path literals in the workbench stub tests and two skill docs.

Co-authored-by: Arvin Xu <arvin.x@lobehub.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-27 10:52:03 +08:00
Innei b495d15654 💄 style(workbench): align mobile padding baseline on acceptance detail (#18616) 2026-08-23 14:34:17 +08:00
Innei 3d751686af ✨ feat(acceptance): restore in-app workspace and assemble the public page from atoms (#18501)
* ✨ feat(acceptance): restore in-app workspace and assemble the public page from atoms

Keep the full owner workspace in the main SPA and compose the workbench share page from read-only capability atoms so owner actions stay out of the public bundle.

* 📝 docs(compose-atoms): generalize the skill around grain and sink-state

Make the kit apply to any heavy domain feature, and keep focus review filling the in-app frame.

* ⚡ perf(workbench): slim the public page and stop shipping shiki in the bundle

Keep the share surface to identity only, shim the browser lambda client to cookies, stub shiki on SSR, and load grammars from esm.sh on the client.

* ✨ feat(acceptance): show goal and check inventory on workbench detail

* 🐛 fix(acceptance): handle null acceptanceId in useAcceptanceBundle

Signed-off-by: Innei <tukon479@gmail.com>

* ✨ feat(workbench): put a go-to-app CTA on the public header

* ✅ test(workbench): fail the build when the graph uses stub-missing APIs

Keep workbench stubs as an explicit surface and scan the module graph on
build:rr so a later call to a simplified-away method is a build failure.

* 🐛 fix(acceptance): type verdict helpers with TFunction

Database CI lint failed because useTranslation('verify') is not assignable
to the hand-written (key: string) => string helper signatures.

---------

Signed-off-by: Innei <tukon479@gmail.com>
2026-08-20 16:45:21 +08:00
Arvin Xu ff9aa0ebf6 ✨ feat: group acceptance deliveries by project (#18448)
* ✨ feat(acceptance): group deliveries by project

* ⚡️ perf(acceptance): persist project association

* ✨ feat(project): associate durable works
2026-08-20 13:00:15 +08:00
Innei 1001a58a22 ✨ feat(workbench): React Router framework mode SSR on Cloudflare Workers (#18473)
* ♻️ refactor(spa): extract verify/acceptance into apps/workbench

Move the Workbench SPA into apps/workbench and serve /verify and
/acceptance from that runtime for every web UA. The main SPA no
longer registers those page routes, so they drop out of its bundle.

* 🔧 chore(docker): wire the workbench workspace into image builds

Copy apps/workbench/package.json before pnpm i so Docker can resolve
the extracted SPA. Keep generateSpaTemplates optional for Cloud, and
require the HTML only when WORKBENCH_REQUIRED=1 (build:docker).

* ♻️ refactor(workbench): hard-navigate only from markdown entity links

Keep Link and useWorkspaceAwareNavigate in-router. Markdown verify,
acceptance, and mobile agent-doc links document-navigate. Drop the
__WORKBENCH__ Vite define; Electron still skips hard-nav for portals.

* ♻️ refactor(verify): slot-inject origin conversation and decouple shared components

* 🐛 fix(i18n): make vite glob loaders independent of the vite root

* ✨ feat(workbench): React Router framework mode SSR on Cloudflare Workers

* 🐛 fix(verify): render viewer-timezone timestamps only after hydration

* 💚 ci(workbench): deploy with affected detection and PR build verification

* 📝 docs(skills): micro-app split and gateway routing playbook

* 🐛 fix(workbench): track app/lib swallowed by the root lib/ ignore rules

* ✨ feat(workbench): signed-in acceptance list sidebar on detail pages

* 🐛 fix(workbench): survive shared-origin gateway quirks in client navigation

* 💄 style(workbench): surface error detail on the boundary page

* 💄 style(workbench): adopt the shared ErrorCapture page for the root boundary

* 💄 style(verify): drop the app-home back arrow from the acceptance list panel

* 🔧 chore(workbench): persist only error logs in wrangler observability

* 📝 docs(skills): record Docker vs Cloud hosting for micro apps

OSS Docker still builds and serves the SPA in-image. Cloud Next must
not build, rewrite, or CDN-upload it — gateway routes to the Worker.

* 💄 style(workbench): pin the acceptance logo while the list panel slides

* 🐛 fix(workbench): only show the acceptance sidebar when signed in

* 🐛 fix(verify): drop namespace prefix on bound verify translations
2026-08-19 18:21:00 +08:00