feat(settings): move IM bot to top-level menu

Remove the legacy Plugins-tab registrations, keep the channel-logo navigation, and harden upgrade/package verification.
This commit is contained in:
xmanrui 2026-08-25 22:42:41 +08:00
parent 892e18db77
commit 1ce8126edb
30 changed files with 815 additions and 842 deletions

View file

@ -5,7 +5,6 @@ import { QrActionIcon } from '../../credential-binding.js';
import { h } from '../../i18n.js';
import {
WEIXIN_ENDPOINTS,
WEIXIN_RPC_CHANNEL,
formatRemaining,
normalizeProvisioning,
normalizeSnapshot,
@ -27,11 +26,6 @@ import {
ChannelListHeading,
LastMessageErrorSummary,
} from '../../channel-card-meta.js';
import { installWeixinStyles } from './styles.js';
export const name = 'weixin-settings';
export const inject = ['slots', 'connection'];
const Button = React.forwardRef(function Button(
{ children, kind = 'secondary', className = '', ...props },
ref,
@ -717,16 +711,3 @@ export function WeixinSettingsTab({ rpcCall }) {
: null),
));
}
export function apply(ctx) {
ctx.effect(() => installWeixinStyles(), 'weixin-settings: install client styles');
const rpcCall = (endpoint, payload, signal) =>
ctx.connection.rpc.call(WEIXIN_RPC_CHANNEL, endpoint, payload, signal);
ctx.slots.inject('settings.plugins.tab', () => ctx.slots.register({
name: 'settings.plugins.tab',
id: 'weixin',
order: 30,
label: '微信',
inject: () => ({ rpcCall }),
}, WeixinSettingsTab));
}

View file

@ -1,4 +1,4 @@
export const WEIXIN_STYLE_ID = 'xmanrui-dsh-weixin-settings';
export const WEIXIN_STYLE_ID = 'xmanrui-dsh-im-weixin-settings';
const CSS = String.raw`
.dxw-page {
@ -107,7 +107,7 @@ export function installWeixinStyles() {
const existing = document.querySelector(`style[data-plugin-css="${WEIXIN_STYLE_ID}"]`);
if (existing) return () => {};
const style = document.createElement('style');
style.dataset.plugin = '@xmanrui/dsh-weixin';
style.dataset.plugin = '@xmanrui/dsh-im';
style.dataset.pluginCss = WEIXIN_STYLE_ID;
style.textContent = CSS;
document.head.appendChild(style);