diff --git a/.github/update.log b/.github/update.log index 984514380e..07263f286d 100644 --- a/.github/update.log +++ b/.github/update.log @@ -783,3 +783,4 @@ Update On Mon Sep 30 20:38:12 CEST 2024 Update On Wed Oct 2 15:52:06 CEST 2024 Update On Wed Oct 2 20:35:36 CEST 2024 Update On Thu Oct 3 20:36:48 CEST 2024 +Update On Fri Oct 4 20:35:09 CEST 2024 diff --git a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/direct.go b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/direct.go index 15f081f2bf..9ee237fa13 100644 --- a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/direct.go +++ b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/direct.go @@ -32,7 +32,7 @@ func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ... return nil, err } } - opts = append(opts, dialer.WithResolver(resolver.DefaultResolver)) + opts = append(opts, dialer.WithResolver(resolver.DirectHostResolver)) c, err := dialer.DialContext(ctx, "tcp", metadata.RemoteAddress(), d.Base.DialOptions(opts...)...) if err != nil { return nil, err @@ -49,7 +49,7 @@ func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, } // net.UDPConn.WriteTo only working with *net.UDPAddr, so we need a net.UDPAddr if !metadata.Resolved() { - ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, resolver.DefaultResolver) + ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, resolver.DirectHostResolver) if err != nil { return nil, errors.New("can't resolve ip") } diff --git a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/hysteria.go b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/hysteria.go index ccab16c12a..a7367b83bc 100644 --- a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/hysteria.go +++ b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/hysteria.go @@ -69,7 +69,7 @@ func (h *Hysteria) ListenPacketContext(ctx context.Context, metadata *C.Metadata func (h *Hysteria) genHdc(ctx context.Context, opts ...dialer.Option) utils.PacketDialer { return &hyDialerWithContext{ ctx: context.Background(), - hyDialer: func(network string) (net.PacketConn, error) { + hyDialer: func(network string, rAddr net.Addr) (net.PacketConn, error) { var err error var cDialer C.Dialer = dialer.NewDialer(h.Base.DialOptions(opts...)...) if len(h.option.DialerProxy) > 0 { @@ -78,7 +78,7 @@ func (h *Hysteria) genHdc(ctx context.Context, opts ...dialer.Option) utils.Pack return nil, err } } - rAddrPort, _ := netip.ParseAddrPort(h.Addr()) + rAddrPort, _ := netip.ParseAddrPort(rAddr.String()) return cDialer.ListenPacket(ctx, network, "", rAddrPort) }, remoteAddr: func(addr string) (net.Addr, error) { @@ -284,7 +284,7 @@ func (c *hyPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) { } type hyDialerWithContext struct { - hyDialer func(network string) (net.PacketConn, error) + hyDialer func(network string, rAddr net.Addr) (net.PacketConn, error) ctx context.Context remoteAddr func(host string) (net.Addr, error) } @@ -294,7 +294,7 @@ func (h *hyDialerWithContext) ListenPacket(rAddr net.Addr) (net.PacketConn, erro if addrPort, err := netip.ParseAddrPort(rAddr.String()); err == nil { network = dialer.ParseNetwork(network, addrPort.Addr()) } - return h.hyDialer(network) + return h.hyDialer(network, rAddr) } func (h *hyDialerWithContext) Context() context.Context { diff --git a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/util.go b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/util.go index 2c85c7c8c1..9f0636a6e1 100644 --- a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/util.go +++ b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/util.go @@ -55,7 +55,7 @@ func resolveUDPAddr(ctx context.Context, network, address string) (*net.UDPAddr, return nil, err } - ip, err := resolver.ResolveProxyServerHost(ctx, host) + ip, err := resolver.ResolveIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err != nil { return nil, err } @@ -71,12 +71,12 @@ func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, pref var fallback netip.Addr switch prefer { case C.IPv4Only: - ip, err = resolver.ResolveIPv4ProxyServerHost(ctx, host) + ip, err = resolver.ResolveIPv4WithResolver(ctx, host, resolver.ProxyServerHostResolver) case C.IPv6Only: - ip, err = resolver.ResolveIPv6ProxyServerHost(ctx, host) + ip, err = resolver.ResolveIPv6WithResolver(ctx, host, resolver.ProxyServerHostResolver) case C.IPv6Prefer: var ips []netip.Addr - ips, err = resolver.LookupIPProxyServerHost(ctx, host) + ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err == nil { for _, addr := range ips { if addr.Is6() { @@ -92,7 +92,7 @@ func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, pref default: // C.IPv4Prefer, C.DualStack and other var ips []netip.Addr - ips, err = resolver.LookupIPProxyServerHost(ctx, host) + ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err == nil { for _, addr := range ips { if addr.Is4() { diff --git a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/wireguard.go b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/wireguard.go index 3928ab1b7e..03145c3700 100644 --- a/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/wireguard.go +++ b/clash-meta-android/core/src/foss/golang/clash/adapter/outbound/wireguard.go @@ -44,7 +44,7 @@ type WireGuard struct { device wireguardGoDevice tunDevice wireguard.Device dialer proxydialer.SingDialer - resolver *dns.Resolver + resolver resolver.Resolver refP *refProxyAdapter initOk atomic.Bool @@ -296,7 +296,7 @@ func NewWireGuard(option WireGuardOption) (*WireGuard, error) { for i := range nss { nss[i].ProxyAdapter = refP } - outbound.resolver, _ = dns.NewResolver(dns.Config{ + outbound.resolver = dns.NewResolver(dns.Config{ Main: nss, IPv6: has6, }) diff --git a/clash-meta-android/core/src/foss/golang/clash/component/dialer/dialer.go b/clash-meta-android/core/src/foss/golang/clash/component/dialer/dialer.go index 3dfd3159bb..4fd051ef44 100644 --- a/clash-meta-android/core/src/foss/golang/clash/component/dialer/dialer.go +++ b/clash-meta-android/core/src/foss/golang/clash/component/dialer/dialer.go @@ -340,26 +340,18 @@ func parseAddr(ctx context.Context, network, address string, preferResolver reso return nil, "-1", err } + if preferResolver == nil { + preferResolver = resolver.ProxyServerHostResolver + } + var ips []netip.Addr switch network { case "tcp4", "udp4": - if preferResolver == nil { - ips, err = resolver.LookupIPv4ProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPv4WithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPv4WithResolver(ctx, host, preferResolver) case "tcp6", "udp6": - if preferResolver == nil { - ips, err = resolver.LookupIPv6ProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPv6WithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPv6WithResolver(ctx, host, preferResolver) default: - if preferResolver == nil { - ips, err = resolver.LookupIPProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPWithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPWithResolver(ctx, host, preferResolver) } if err != nil { return nil, "-1", fmt.Errorf("dns resolve failed: %w", err) diff --git a/clash-meta-android/core/src/foss/golang/clash/component/dialer/resolver.go b/clash-meta-android/core/src/foss/golang/clash/component/dialer/resolver.go deleted file mode 100644 index ea38a90e5b..0000000000 --- a/clash-meta-android/core/src/foss/golang/clash/component/dialer/resolver.go +++ /dev/null @@ -1,29 +0,0 @@ -package dialer - -import ( - "context" - "net" - "net/netip" -) - -func init() { - // We must use this DialContext to query DNS - // when using net default resolver. - net.DefaultResolver.PreferGo = true - net.DefaultResolver.Dial = resolverDialContext -} - -func resolverDialContext(ctx context.Context, network, address string) (net.Conn, error) { - d := &net.Dialer{} - - interfaceName := DefaultInterface.Load() - - if interfaceName != "" { - dstIP, err := netip.ParseAddr(address) - if err == nil { - _ = bindIfaceToDialer(interfaceName, d, network, dstIP) - } - } - - return d.DialContext(ctx, network, address) -} diff --git a/clash-meta-android/core/src/foss/golang/clash/component/resolver/defaults.go b/clash-meta-android/core/src/foss/golang/clash/component/resolver/defaults.go deleted file mode 100644 index 8a04bd175a..0000000000 --- a/clash-meta-android/core/src/foss/golang/clash/component/resolver/defaults.go +++ /dev/null @@ -1,12 +0,0 @@ -//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris - -package resolver - -import _ "unsafe" - -//go:linkname defaultNS net.defaultNS -var defaultNS []string - -func init() { - defaultNS = []string{"114.114.114.114:53", "8.8.8.8:53"} -} diff --git a/clash-meta-android/core/src/foss/golang/clash/component/resolver/host_windows.go b/clash-meta-android/core/src/foss/golang/clash/component/resolver/host_windows.go deleted file mode 100644 index 669f954763..0000000000 --- a/clash-meta-android/core/src/foss/golang/clash/component/resolver/host_windows.go +++ /dev/null @@ -1,19 +0,0 @@ -//go:build !go1.22 - -// a simple standard lib fix from: https://github.com/golang/go/commit/33d4a5105cf2b2d549922e909e9239a48b8cefcc - -package resolver - -import ( - "golang.org/x/sys/windows" - _ "unsafe" -) - -//go:linkname testHookHostsPath net.testHookHostsPath -var testHookHostsPath string - -func init() { - if dir, err := windows.GetSystemDirectory(); err == nil { - testHookHostsPath = dir + "/Drivers/etc/hosts" - } -} diff --git a/clash-meta-android/core/src/foss/golang/clash/component/resolver/resolver.go b/clash-meta-android/core/src/foss/golang/clash/component/resolver/resolver.go index bcdbb7e2c4..1eb3d642ef 100644 --- a/clash-meta-android/core/src/foss/golang/clash/component/resolver/resolver.go +++ b/clash-meta-android/core/src/foss/golang/clash/component/resolver/resolver.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "net" "net/netip" "strings" "time" @@ -20,9 +19,15 @@ var ( // DefaultResolver aim to resolve ip DefaultResolver Resolver - // ProxyServerHostResolver resolve ip to proxies server host + // ProxyServerHostResolver resolve ip for proxies server host, only nil when DefaultResolver is nil ProxyServerHostResolver Resolver + // DirectHostResolver resolve ip for direct outbound host, only nil when DefaultResolver is nil + DirectHostResolver Resolver + + // SystemResolver always using system dns, and was init in dns module + SystemResolver Resolver + // DisableIPv6 means don't resolve ipv6 host // default value is true DisableIPv6 = true @@ -72,14 +77,7 @@ func LookupIPv4WithResolver(ctx context.Context, host string, r Resolver) ([]net return r.LookupIPv4(ctx, host) } - ipAddrs, err := net.DefaultResolver.LookupNetIP(ctx, "ip4", host) - if err != nil { - return nil, err - } else if len(ipAddrs) == 0 { - return nil, ErrIPNotFound - } - - return ipAddrs, nil + return SystemResolver.LookupIPv4(ctx, host) } // LookupIPv4 with a host, return ipv4 list @@ -128,14 +126,7 @@ func LookupIPv6WithResolver(ctx context.Context, host string, r Resolver) ([]net return r.LookupIPv6(ctx, host) } - ipAddrs, err := net.DefaultResolver.LookupNetIP(ctx, "ip6", host) - if err != nil { - return nil, err - } else if len(ipAddrs) == 0 { - return nil, ErrIPNotFound - } - - return ipAddrs, nil + return SystemResolver.LookupIPv6(ctx, host) } // LookupIPv6 with a host, return ipv6 list @@ -177,14 +168,7 @@ func LookupIPWithResolver(ctx context.Context, host string, r Resolver) ([]netip return []netip.Addr{ip}, nil } - ips, err := net.DefaultResolver.LookupNetIP(ctx, "ip", host) - if err != nil { - return nil, err - } else if len(ips) == 0 { - return nil, ErrIPNotFound - } - - return ips, nil + return SystemResolver.LookupIP(ctx, host) } // LookupIP with a host, return ip @@ -212,58 +196,10 @@ func ResolveIP(ctx context.Context, host string) (netip.Addr, error) { return ResolveIPWithResolver(ctx, host, DefaultResolver) } -// ResolveIPv4ProxyServerHost proxies server host only -func ResolveIPv4ProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPv4WithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIPv4(ctx, host) -} - -// ResolveIPv6ProxyServerHost proxies server host only -func ResolveIPv6ProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPv6WithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIPv6(ctx, host) -} - -// ResolveProxyServerHost proxies server host only -func ResolveProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPWithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIP(ctx, host) -} - -func LookupIPv6ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPv6WithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIPv6(ctx, host) -} - -func LookupIPv4ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPv4WithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIPv4(ctx, host) -} - -func LookupIPProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPWithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIP(ctx, host) -} - func ResetConnection() { if DefaultResolver != nil { go DefaultResolver.ResetConnection() } - if ProxyServerHostResolver != nil { - go ProxyServerHostResolver.ResetConnection() - } } func SortationAddr(ips []netip.Addr) (ipv4s, ipv6s []netip.Addr) { diff --git a/clash-meta-android/core/src/foss/golang/clash/config/config.go b/clash-meta-android/core/src/foss/golang/clash/config/config.go index 3117853cbd..3ca57a4598 100644 --- a/clash-meta-android/core/src/foss/golang/clash/config/config.go +++ b/clash-meta-android/core/src/foss/golang/clash/config/config.go @@ -160,6 +160,8 @@ type DNS struct { Hosts *trie.DomainTrie[resolver.HostValue] NameServerPolicy []dns.Policy ProxyServerNameserver []dns.NameServer + DirectNameServer []dns.NameServer + DirectFollowPolicy bool } // Profile config @@ -203,25 +205,27 @@ type RawCors struct { } type RawDNS struct { - Enable bool `yaml:"enable" json:"enable"` - PreferH3 bool `yaml:"prefer-h3" json:"prefer-h3"` - IPv6 bool `yaml:"ipv6" json:"ipv6"` - IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` - UseHosts bool `yaml:"use-hosts" json:"use-hosts"` - UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` - RespectRules bool `yaml:"respect-rules" json:"respect-rules"` - NameServer []string `yaml:"nameserver" json:"nameserver"` - Fallback []string `yaml:"fallback" json:"fallback"` - FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` - Listen string `yaml:"listen" json:"listen"` - EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"` - FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"` - FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"` - FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"` - DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"` - CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"` - NameServerPolicy *orderedmap.OrderedMap[string, any] `yaml:"nameserver-policy" json:"nameserver-policy"` - ProxyServerNameserver []string `yaml:"proxy-server-nameserver" json:"proxy-server-nameserver"` + Enable bool `yaml:"enable" json:"enable"` + PreferH3 bool `yaml:"prefer-h3" json:"prefer-h3"` + IPv6 bool `yaml:"ipv6" json:"ipv6"` + IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` + UseHosts bool `yaml:"use-hosts" json:"use-hosts"` + UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` + RespectRules bool `yaml:"respect-rules" json:"respect-rules"` + NameServer []string `yaml:"nameserver" json:"nameserver"` + Fallback []string `yaml:"fallback" json:"fallback"` + FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` + Listen string `yaml:"listen" json:"listen"` + EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"` + FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"` + FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"` + FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"` + DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"` + CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"` + NameServerPolicy *orderedmap.OrderedMap[string, any] `yaml:"nameserver-policy" json:"nameserver-policy"` + ProxyServerNameserver []string `yaml:"proxy-server-nameserver" json:"proxy-server-nameserver"` + DirectNameServer []string `yaml:"direct-nameserver" json:"direct-nameserver"` + DirectNameServerFollowPolicy bool `yaml:"direct-nameserver-follow-policy" json:"direct-nameserver-follow-policy"` } type RawFallbackFilter struct { @@ -1423,6 +1427,11 @@ func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], rul return nil, err } + if dnsCfg.DirectNameServer, err = parseNameServer(cfg.DirectNameServer, false, cfg.PreferH3); err != nil { + return nil, err + } + dnsCfg.DirectFollowPolicy = cfg.DirectNameServerFollowPolicy + if len(cfg.DefaultNameserver) == 0 { return nil, errors.New("default nameserver should have at least one nameserver") } diff --git a/clash-meta-android/core/src/foss/golang/clash/dns/patch_android.go b/clash-meta-android/core/src/foss/golang/clash/dns/patch_android.go index e3dcd2492f..8e744fcd81 100644 --- a/clash-meta-android/core/src/foss/golang/clash/dns/patch_android.go +++ b/clash-meta-android/core/src/foss/golang/clash/dns/patch_android.go @@ -12,6 +12,9 @@ func FlushCacheWithDefaultResolver() { if r := resolver.DefaultResolver; r != nil { r.ClearCache() } + if r := resolver.SystemResolver; r != nil { + r.ClearCache() + } resolver.ResetConnection() } diff --git a/clash-meta-android/core/src/foss/golang/clash/dns/resolver.go b/clash-meta-android/core/src/foss/golang/clash/dns/resolver.go index ec59f42857..9f7e28f38c 100644 --- a/clash-meta-android/core/src/foss/golang/clash/dns/resolver.go +++ b/clash-meta-android/core/src/foss/golang/clash/dns/resolver.go @@ -13,7 +13,6 @@ import ( "github.com/metacubex/mihomo/component/resolver" "github.com/metacubex/mihomo/component/trie" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/log" D "github.com/miekg/dns" @@ -428,6 +427,8 @@ type Config struct { Main, Fallback []NameServer Default []NameServer ProxyServer []NameServer + DirectServer []NameServer + DirectFollowPolicy bool IPv6 bool IPv6Timeout uint EnhancedMode C.DNSMode @@ -436,7 +437,6 @@ type Config struct { Pool *fakeip.Pool Hosts *trie.DomainTrie[resolver.HostValue] Policy []Policy - Tunnel provider.Tunnel CacheAlgorithm string } @@ -448,7 +448,25 @@ func (config Config) newCache() dnsCache { } } -func NewResolver(config Config) (r *Resolver, pr *Resolver) { +type Resolvers struct { + *Resolver + ProxyResolver *Resolver + DirectResolver *Resolver +} + +func (rs Resolvers) ClearCache() { + rs.Resolver.ClearCache() + rs.ProxyResolver.ClearCache() + rs.DirectResolver.ClearCache() +} + +func (rs Resolvers) ResetConnection() { + rs.Resolver.ResetConnection() + rs.ProxyResolver.ResetConnection() + rs.DirectResolver.ResetConnection() +} + +func NewResolver(config Config) (rs Resolvers) { defaultResolver := &Resolver{ main: transform(config.Default, nil), cache: config.newCache(), @@ -482,7 +500,7 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { return } - r = &Resolver{ + r := &Resolver{ ipv6: config.IPv6, main: cacheTransform(config.Main), cache: config.newCache(), @@ -490,9 +508,10 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond, } r.defaultResolver = defaultResolver + rs.Resolver = r if len(config.ProxyServer) != 0 { - pr = &Resolver{ + rs.ProxyResolver = &Resolver{ ipv6: config.IPv6, main: cacheTransform(config.ProxyServer), cache: config.newCache(), @@ -501,8 +520,20 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { } } + if len(config.DirectServer) != 0 { + rs.DirectResolver = &Resolver{ + ipv6: config.IPv6, + main: cacheTransform(config.DirectServer), + cache: config.newCache(), + hosts: config.Hosts, + ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond, + } + } + if len(config.Fallback) != 0 { r.fallback = cacheTransform(config.Fallback) + r.fallbackIPFilters = config.FallbackIPFilter + r.fallbackDomainFilters = config.FallbackDomainFilter } if len(config.Policy) != 0 { @@ -531,9 +562,11 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { } } insertPolicy(nil) + + if rs.DirectResolver != nil && config.DirectFollowPolicy { + rs.DirectResolver.policy = r.policy + } } - r.fallbackIPFilters = config.FallbackIPFilter - r.fallbackDomainFilters = config.FallbackDomainFilter return } diff --git a/clash-meta-android/core/src/foss/golang/clash/dns/system.go b/clash-meta-android/core/src/foss/golang/clash/dns/system.go index 944f2824c2..9fb803ddcb 100644 --- a/clash-meta-android/core/src/foss/golang/clash/dns/system.go +++ b/clash-meta-android/core/src/foss/golang/clash/dns/system.go @@ -7,6 +7,8 @@ import ( "sync" "time" + "github.com/metacubex/mihomo/component/resolver" + D "github.com/miekg/dns" ) @@ -24,12 +26,17 @@ type systemClient struct { mu sync.Mutex dnsClients map[string]*systemDnsClient lastFlush time.Time + defaultNS []dnsClient } func (c *systemClient) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) { dnsClients, err := c.getDnsClients() if err != nil { - return + if len(c.defaultNS) > 0 { + dnsClients = c.defaultNS + } else { + return + } } msg, _, err = batchExchange(ctx, dnsClients, m) return @@ -52,3 +59,11 @@ func newSystemClient() *systemClient { dnsClients: map[string]*systemDnsClient{}, } } + +func init() { + r := NewResolver(Config{}) + c := newSystemClient() + c.defaultNS = transform([]NameServer{{Addr: "114.114.114.114:53"}, {Addr: "8.8.8.8:53"}}, nil) + r.main = []dnsClient{c} + resolver.SystemResolver = r +} diff --git a/clash-meta-android/core/src/foss/golang/clash/docs/config.yaml b/clash-meta-android/core/src/foss/golang/clash/docs/config.yaml index 15bcf6076d..e75e5bd59b 100644 --- a/clash-meta-android/core/src/foss/golang/clash/docs/config.yaml +++ b/clash-meta-android/core/src/foss/golang/clash/docs/config.yaml @@ -294,10 +294,15 @@ dns: # - tcp://1.1.1.1 # - 'tcp://1.1.1.1#ProxyGroupName' # 指定 DNS 过代理查询,ProxyGroupName 为策略组名或节点名,过代理配置优先于配置出口网卡,当找不到策略组或节点名则设置为出口网卡 - # 专用于节点域名解析的 DNS 服务器,非必要配置项 + # 专用于节点域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 # proxy-server-nameserver: - # - https://dns.google/dns-query - # - tls://one.one.one.one + # - https://dns.google/dns-query + # - tls://one.one.one.one + + # 专用于direct出口域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 + # direct-nameserver: + # - system:// + # direct-nameserver-follow-policy: false # 是否遵循nameserver-policy,默认为不遵守,仅当direct-nameserver不为空时生效 # 配置 fallback 使用条件 # fallback-filter: diff --git a/clash-meta-android/core/src/foss/golang/clash/hub/executor/executor.go b/clash-meta-android/core/src/foss/golang/clash/hub/executor/executor.go index 214407b477..b8d9cddb96 100644 --- a/clash-meta-android/core/src/foss/golang/clash/hub/executor/executor.go +++ b/clash-meta-android/core/src/foss/golang/clash/hub/executor/executor.go @@ -235,6 +235,8 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { resolver.DefaultResolver = nil resolver.DefaultHostMapper = nil resolver.DefaultLocalServer = nil + resolver.ProxyServerHostResolver = nil + resolver.DirectHostResolver = nil dns.ReCreateServer("", nil, nil) return } @@ -251,11 +253,12 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { Default: c.DefaultNameserver, Policy: c.NameServerPolicy, ProxyServer: c.ProxyServerNameserver, - Tunnel: tunnel.Tunnel, + DirectServer: c.DirectNameServer, + DirectFollowPolicy: c.DirectFollowPolicy, CacheAlgorithm: c.CacheAlgorithm, } - r, pr := dns.NewResolver(cfg) + r := dns.NewResolver(cfg) m := dns.NewEnhancer(cfg) // reuse cache of old host mapper @@ -265,14 +268,22 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { resolver.DefaultResolver = r resolver.DefaultHostMapper = m - resolver.DefaultLocalServer = dns.NewLocalServer(r, m) + resolver.DefaultLocalServer = dns.NewLocalServer(r.Resolver, m) resolver.UseSystemHosts = c.UseSystemHosts - if pr.Invalid() { - resolver.ProxyServerHostResolver = pr + if r.ProxyResolver.Invalid() { + resolver.ProxyServerHostResolver = r.ProxyResolver + } else { + resolver.ProxyServerHostResolver = r.Resolver } - dns.ReCreateServer(c.Listen, r, m) + if r.DirectResolver.Invalid() { + resolver.DirectHostResolver = r.DirectResolver + } else { + resolver.DirectHostResolver = r.Resolver + } + + dns.ReCreateServer(c.Listen, r.Resolver, m) } func updateHosts(tree *trie.DomainTrie[resolver.HostValue]) { diff --git a/clash-meta-android/core/src/foss/golang/clash/main.go b/clash-meta-android/core/src/foss/golang/clash/main.go index 505cdb2566..685fc89f6a 100644 --- a/clash-meta-android/core/src/foss/golang/clash/main.go +++ b/clash-meta-android/core/src/foss/golang/clash/main.go @@ -1,9 +1,11 @@ package main import ( + "context" "encoding/base64" "flag" "fmt" + "net" "os" "os/signal" "path/filepath" @@ -55,6 +57,12 @@ func init() { } func main() { + // Defensive programming: panic when code mistakenly calls net.DefaultResolver + net.DefaultResolver.PreferGo = true + net.DefaultResolver.Dial = func(ctx context.Context, network, address string) (net.Conn, error) { + panic("should never be called") + } + _, _ = maxprocs.Set(maxprocs.Logger(func(string, ...any) {})) if len(os.Args) > 1 && os.Args[1] == "convert-ruleset" { diff --git a/clash-meta-android/core/src/foss/golang/clash/tunnel/statistic/manager.go b/clash-meta-android/core/src/foss/golang/clash/tunnel/statistic/manager.go index 087471184d..0b3092992b 100644 --- a/clash-meta-android/core/src/foss/golang/clash/tunnel/statistic/manager.go +++ b/clash-meta-android/core/src/foss/golang/clash/tunnel/statistic/manager.go @@ -114,10 +114,8 @@ func (m *Manager) handle() { ticker := time.NewTicker(time.Second) for range ticker.C { - m.uploadBlip.Store(m.uploadTemp.Load()) - m.uploadTemp.Store(0) - m.downloadBlip.Store(m.downloadTemp.Load()) - m.downloadTemp.Store(0) + m.uploadBlip.Store(m.uploadTemp.Swap(0)) + m.downloadBlip.Store(m.downloadTemp.Swap(0)) } } diff --git a/clash-meta/adapter/outbound/direct.go b/clash-meta/adapter/outbound/direct.go index 15f081f2bf..9ee237fa13 100644 --- a/clash-meta/adapter/outbound/direct.go +++ b/clash-meta/adapter/outbound/direct.go @@ -32,7 +32,7 @@ func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ... return nil, err } } - opts = append(opts, dialer.WithResolver(resolver.DefaultResolver)) + opts = append(opts, dialer.WithResolver(resolver.DirectHostResolver)) c, err := dialer.DialContext(ctx, "tcp", metadata.RemoteAddress(), d.Base.DialOptions(opts...)...) if err != nil { return nil, err @@ -49,7 +49,7 @@ func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, } // net.UDPConn.WriteTo only working with *net.UDPAddr, so we need a net.UDPAddr if !metadata.Resolved() { - ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, resolver.DefaultResolver) + ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, resolver.DirectHostResolver) if err != nil { return nil, errors.New("can't resolve ip") } diff --git a/clash-meta/adapter/outbound/util.go b/clash-meta/adapter/outbound/util.go index 2c85c7c8c1..9f0636a6e1 100644 --- a/clash-meta/adapter/outbound/util.go +++ b/clash-meta/adapter/outbound/util.go @@ -55,7 +55,7 @@ func resolveUDPAddr(ctx context.Context, network, address string) (*net.UDPAddr, return nil, err } - ip, err := resolver.ResolveProxyServerHost(ctx, host) + ip, err := resolver.ResolveIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err != nil { return nil, err } @@ -71,12 +71,12 @@ func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, pref var fallback netip.Addr switch prefer { case C.IPv4Only: - ip, err = resolver.ResolveIPv4ProxyServerHost(ctx, host) + ip, err = resolver.ResolveIPv4WithResolver(ctx, host, resolver.ProxyServerHostResolver) case C.IPv6Only: - ip, err = resolver.ResolveIPv6ProxyServerHost(ctx, host) + ip, err = resolver.ResolveIPv6WithResolver(ctx, host, resolver.ProxyServerHostResolver) case C.IPv6Prefer: var ips []netip.Addr - ips, err = resolver.LookupIPProxyServerHost(ctx, host) + ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err == nil { for _, addr := range ips { if addr.Is6() { @@ -92,7 +92,7 @@ func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, pref default: // C.IPv4Prefer, C.DualStack and other var ips []netip.Addr - ips, err = resolver.LookupIPProxyServerHost(ctx, host) + ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err == nil { for _, addr := range ips { if addr.Is4() { diff --git a/clash-meta/adapter/outbound/wireguard.go b/clash-meta/adapter/outbound/wireguard.go index 3928ab1b7e..03145c3700 100644 --- a/clash-meta/adapter/outbound/wireguard.go +++ b/clash-meta/adapter/outbound/wireguard.go @@ -44,7 +44,7 @@ type WireGuard struct { device wireguardGoDevice tunDevice wireguard.Device dialer proxydialer.SingDialer - resolver *dns.Resolver + resolver resolver.Resolver refP *refProxyAdapter initOk atomic.Bool @@ -296,7 +296,7 @@ func NewWireGuard(option WireGuardOption) (*WireGuard, error) { for i := range nss { nss[i].ProxyAdapter = refP } - outbound.resolver, _ = dns.NewResolver(dns.Config{ + outbound.resolver = dns.NewResolver(dns.Config{ Main: nss, IPv6: has6, }) diff --git a/clash-meta/component/dialer/dialer.go b/clash-meta/component/dialer/dialer.go index 3dfd3159bb..4fd051ef44 100644 --- a/clash-meta/component/dialer/dialer.go +++ b/clash-meta/component/dialer/dialer.go @@ -340,26 +340,18 @@ func parseAddr(ctx context.Context, network, address string, preferResolver reso return nil, "-1", err } + if preferResolver == nil { + preferResolver = resolver.ProxyServerHostResolver + } + var ips []netip.Addr switch network { case "tcp4", "udp4": - if preferResolver == nil { - ips, err = resolver.LookupIPv4ProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPv4WithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPv4WithResolver(ctx, host, preferResolver) case "tcp6", "udp6": - if preferResolver == nil { - ips, err = resolver.LookupIPv6ProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPv6WithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPv6WithResolver(ctx, host, preferResolver) default: - if preferResolver == nil { - ips, err = resolver.LookupIPProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPWithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPWithResolver(ctx, host, preferResolver) } if err != nil { return nil, "-1", fmt.Errorf("dns resolve failed: %w", err) diff --git a/clash-meta/component/resolver/resolver.go b/clash-meta/component/resolver/resolver.go index 8b180c1e47..1eb3d642ef 100644 --- a/clash-meta/component/resolver/resolver.go +++ b/clash-meta/component/resolver/resolver.go @@ -19,9 +19,12 @@ var ( // DefaultResolver aim to resolve ip DefaultResolver Resolver - // ProxyServerHostResolver resolve ip to proxies server host + // ProxyServerHostResolver resolve ip for proxies server host, only nil when DefaultResolver is nil ProxyServerHostResolver Resolver + // DirectHostResolver resolve ip for direct outbound host, only nil when DefaultResolver is nil + DirectHostResolver Resolver + // SystemResolver always using system dns, and was init in dns module SystemResolver Resolver @@ -193,58 +196,10 @@ func ResolveIP(ctx context.Context, host string) (netip.Addr, error) { return ResolveIPWithResolver(ctx, host, DefaultResolver) } -// ResolveIPv4ProxyServerHost proxies server host only -func ResolveIPv4ProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPv4WithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIPv4(ctx, host) -} - -// ResolveIPv6ProxyServerHost proxies server host only -func ResolveIPv6ProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPv6WithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIPv6(ctx, host) -} - -// ResolveProxyServerHost proxies server host only -func ResolveProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPWithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIP(ctx, host) -} - -func LookupIPv6ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPv6WithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIPv6(ctx, host) -} - -func LookupIPv4ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPv4WithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIPv4(ctx, host) -} - -func LookupIPProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPWithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIP(ctx, host) -} - func ResetConnection() { if DefaultResolver != nil { go DefaultResolver.ResetConnection() } - if ProxyServerHostResolver != nil { - go ProxyServerHostResolver.ResetConnection() - } } func SortationAddr(ips []netip.Addr) (ipv4s, ipv6s []netip.Addr) { diff --git a/clash-meta/config/config.go b/clash-meta/config/config.go index 3117853cbd..3ca57a4598 100644 --- a/clash-meta/config/config.go +++ b/clash-meta/config/config.go @@ -160,6 +160,8 @@ type DNS struct { Hosts *trie.DomainTrie[resolver.HostValue] NameServerPolicy []dns.Policy ProxyServerNameserver []dns.NameServer + DirectNameServer []dns.NameServer + DirectFollowPolicy bool } // Profile config @@ -203,25 +205,27 @@ type RawCors struct { } type RawDNS struct { - Enable bool `yaml:"enable" json:"enable"` - PreferH3 bool `yaml:"prefer-h3" json:"prefer-h3"` - IPv6 bool `yaml:"ipv6" json:"ipv6"` - IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` - UseHosts bool `yaml:"use-hosts" json:"use-hosts"` - UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` - RespectRules bool `yaml:"respect-rules" json:"respect-rules"` - NameServer []string `yaml:"nameserver" json:"nameserver"` - Fallback []string `yaml:"fallback" json:"fallback"` - FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` - Listen string `yaml:"listen" json:"listen"` - EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"` - FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"` - FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"` - FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"` - DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"` - CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"` - NameServerPolicy *orderedmap.OrderedMap[string, any] `yaml:"nameserver-policy" json:"nameserver-policy"` - ProxyServerNameserver []string `yaml:"proxy-server-nameserver" json:"proxy-server-nameserver"` + Enable bool `yaml:"enable" json:"enable"` + PreferH3 bool `yaml:"prefer-h3" json:"prefer-h3"` + IPv6 bool `yaml:"ipv6" json:"ipv6"` + IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` + UseHosts bool `yaml:"use-hosts" json:"use-hosts"` + UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` + RespectRules bool `yaml:"respect-rules" json:"respect-rules"` + NameServer []string `yaml:"nameserver" json:"nameserver"` + Fallback []string `yaml:"fallback" json:"fallback"` + FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` + Listen string `yaml:"listen" json:"listen"` + EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"` + FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"` + FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"` + FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"` + DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"` + CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"` + NameServerPolicy *orderedmap.OrderedMap[string, any] `yaml:"nameserver-policy" json:"nameserver-policy"` + ProxyServerNameserver []string `yaml:"proxy-server-nameserver" json:"proxy-server-nameserver"` + DirectNameServer []string `yaml:"direct-nameserver" json:"direct-nameserver"` + DirectNameServerFollowPolicy bool `yaml:"direct-nameserver-follow-policy" json:"direct-nameserver-follow-policy"` } type RawFallbackFilter struct { @@ -1423,6 +1427,11 @@ func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], rul return nil, err } + if dnsCfg.DirectNameServer, err = parseNameServer(cfg.DirectNameServer, false, cfg.PreferH3); err != nil { + return nil, err + } + dnsCfg.DirectFollowPolicy = cfg.DirectNameServerFollowPolicy + if len(cfg.DefaultNameserver) == 0 { return nil, errors.New("default nameserver should have at least one nameserver") } diff --git a/clash-meta/dns/patch_android.go b/clash-meta/dns/patch_android.go index 5a98e86c44..8e744fcd81 100644 --- a/clash-meta/dns/patch_android.go +++ b/clash-meta/dns/patch_android.go @@ -12,9 +12,6 @@ func FlushCacheWithDefaultResolver() { if r := resolver.DefaultResolver; r != nil { r.ClearCache() } - if r := resolver.ProxyServerHostResolver; r != nil { - r.ClearCache() - } if r := resolver.SystemResolver; r != nil { r.ClearCache() } diff --git a/clash-meta/dns/resolver.go b/clash-meta/dns/resolver.go index ea8888cce7..9f7e28f38c 100644 --- a/clash-meta/dns/resolver.go +++ b/clash-meta/dns/resolver.go @@ -427,6 +427,8 @@ type Config struct { Main, Fallback []NameServer Default []NameServer ProxyServer []NameServer + DirectServer []NameServer + DirectFollowPolicy bool IPv6 bool IPv6Timeout uint EnhancedMode C.DNSMode @@ -446,7 +448,25 @@ func (config Config) newCache() dnsCache { } } -func NewResolver(config Config) (r *Resolver, pr *Resolver) { +type Resolvers struct { + *Resolver + ProxyResolver *Resolver + DirectResolver *Resolver +} + +func (rs Resolvers) ClearCache() { + rs.Resolver.ClearCache() + rs.ProxyResolver.ClearCache() + rs.DirectResolver.ClearCache() +} + +func (rs Resolvers) ResetConnection() { + rs.Resolver.ResetConnection() + rs.ProxyResolver.ResetConnection() + rs.DirectResolver.ResetConnection() +} + +func NewResolver(config Config) (rs Resolvers) { defaultResolver := &Resolver{ main: transform(config.Default, nil), cache: config.newCache(), @@ -480,7 +500,7 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { return } - r = &Resolver{ + r := &Resolver{ ipv6: config.IPv6, main: cacheTransform(config.Main), cache: config.newCache(), @@ -488,9 +508,10 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond, } r.defaultResolver = defaultResolver + rs.Resolver = r if len(config.ProxyServer) != 0 { - pr = &Resolver{ + rs.ProxyResolver = &Resolver{ ipv6: config.IPv6, main: cacheTransform(config.ProxyServer), cache: config.newCache(), @@ -499,8 +520,20 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { } } + if len(config.DirectServer) != 0 { + rs.DirectResolver = &Resolver{ + ipv6: config.IPv6, + main: cacheTransform(config.DirectServer), + cache: config.newCache(), + hosts: config.Hosts, + ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond, + } + } + if len(config.Fallback) != 0 { r.fallback = cacheTransform(config.Fallback) + r.fallbackIPFilters = config.FallbackIPFilter + r.fallbackDomainFilters = config.FallbackDomainFilter } if len(config.Policy) != 0 { @@ -529,9 +562,11 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { } } insertPolicy(nil) + + if rs.DirectResolver != nil && config.DirectFollowPolicy { + rs.DirectResolver.policy = r.policy + } } - r.fallbackIPFilters = config.FallbackIPFilter - r.fallbackDomainFilters = config.FallbackDomainFilter return } diff --git a/clash-meta/dns/system.go b/clash-meta/dns/system.go index f05cb0f3d9..9fb803ddcb 100644 --- a/clash-meta/dns/system.go +++ b/clash-meta/dns/system.go @@ -61,7 +61,7 @@ func newSystemClient() *systemClient { } func init() { - r, _ := NewResolver(Config{}) + r := NewResolver(Config{}) c := newSystemClient() c.defaultNS = transform([]NameServer{{Addr: "114.114.114.114:53"}, {Addr: "8.8.8.8:53"}}, nil) r.main = []dnsClient{c} diff --git a/clash-meta/docs/config.yaml b/clash-meta/docs/config.yaml index 15bcf6076d..e75e5bd59b 100644 --- a/clash-meta/docs/config.yaml +++ b/clash-meta/docs/config.yaml @@ -294,10 +294,15 @@ dns: # - tcp://1.1.1.1 # - 'tcp://1.1.1.1#ProxyGroupName' # 指定 DNS 过代理查询,ProxyGroupName 为策略组名或节点名,过代理配置优先于配置出口网卡,当找不到策略组或节点名则设置为出口网卡 - # 专用于节点域名解析的 DNS 服务器,非必要配置项 + # 专用于节点域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 # proxy-server-nameserver: - # - https://dns.google/dns-query - # - tls://one.one.one.one + # - https://dns.google/dns-query + # - tls://one.one.one.one + + # 专用于direct出口域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 + # direct-nameserver: + # - system:// + # direct-nameserver-follow-policy: false # 是否遵循nameserver-policy,默认为不遵守,仅当direct-nameserver不为空时生效 # 配置 fallback 使用条件 # fallback-filter: diff --git a/clash-meta/hub/executor/executor.go b/clash-meta/hub/executor/executor.go index 10ea21b064..b8d9cddb96 100644 --- a/clash-meta/hub/executor/executor.go +++ b/clash-meta/hub/executor/executor.go @@ -235,6 +235,8 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { resolver.DefaultResolver = nil resolver.DefaultHostMapper = nil resolver.DefaultLocalServer = nil + resolver.ProxyServerHostResolver = nil + resolver.DirectHostResolver = nil dns.ReCreateServer("", nil, nil) return } @@ -251,10 +253,12 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { Default: c.DefaultNameserver, Policy: c.NameServerPolicy, ProxyServer: c.ProxyServerNameserver, + DirectServer: c.DirectNameServer, + DirectFollowPolicy: c.DirectFollowPolicy, CacheAlgorithm: c.CacheAlgorithm, } - r, pr := dns.NewResolver(cfg) + r := dns.NewResolver(cfg) m := dns.NewEnhancer(cfg) // reuse cache of old host mapper @@ -264,14 +268,22 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { resolver.DefaultResolver = r resolver.DefaultHostMapper = m - resolver.DefaultLocalServer = dns.NewLocalServer(r, m) + resolver.DefaultLocalServer = dns.NewLocalServer(r.Resolver, m) resolver.UseSystemHosts = c.UseSystemHosts - if pr.Invalid() { - resolver.ProxyServerHostResolver = pr + if r.ProxyResolver.Invalid() { + resolver.ProxyServerHostResolver = r.ProxyResolver + } else { + resolver.ProxyServerHostResolver = r.Resolver } - dns.ReCreateServer(c.Listen, r, m) + if r.DirectResolver.Invalid() { + resolver.DirectHostResolver = r.DirectResolver + } else { + resolver.DirectHostResolver = r.Resolver + } + + dns.ReCreateServer(c.Listen, r.Resolver, m) } func updateHosts(tree *trie.DomainTrie[resolver.HostValue]) { diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index c73f8354f3..ca2d9fc332 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -700,7 +700,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.11.0", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -2365,9 +2365,9 @@ checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" [[package]] name = "fast_image_resize" -version = "4.2.1" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ca4b58827213977eabab8ee8d8258db8441338f3a1832a1c0f2de3372175531" +checksum = "a66a61fbfc84ef99a839499cf9e5a7c2951d2da874ea00f29ee938bc50d1b396" dependencies = [ "cfg-if", "document-features", @@ -7283,9 +7283,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9c08beea86d5095b6f5fb1c788fe8759b23c3f71927c66a69e725a91d089cd" +checksum = "f3fad474c02a3bcd4a304afff97159a31b9bab84e29563f7109c7b0ce8cd774e" dependencies = [ "anyhow", "bytes", @@ -7320,7 +7320,7 @@ dependencies = [ "tauri-macros", "tauri-runtime", "tauri-runtime-wry", - "tauri-utils 2.0.0", + "tauri-utils 2.0.1", "thiserror", "tokio", "tray-icon", @@ -7334,9 +7334,9 @@ dependencies = [ [[package]] name = "tauri-build" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bb649a284aec2ab43e8df6831b8c8060d231ec8ddf05bf021d58cb67570e1f" +checksum = "935f9b3c49b22b3e2e485a57f46d61cd1ae07b1cbb2ba87387a387caf2d8c4e7" dependencies = [ "anyhow", "cargo_toml", @@ -7348,7 +7348,7 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "tauri-utils 2.0.0", + "tauri-utils 2.0.1", "tauri-winres", "toml 0.8.2", "walkdir", @@ -7356,9 +7356,9 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4511912612ba0da11aeb300e18e18b2c7067fd14aa886eac46bdcc43b4fa3ee" +checksum = "95d7443dd4f0b597704b6a14b964ee2ed16e99928d8e6292ae9825f09fbcd30e" dependencies = [ "base64 0.22.1", "brotli", @@ -7373,7 +7373,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "syn 2.0.77", - "tauri-utils 2.0.0", + "tauri-utils 2.0.1", "thiserror", "time", "url", @@ -7383,16 +7383,16 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ee976578a14b779996d7b6879d7e625c8ce674bc87e223953664f37def2eef" +checksum = "4d2c0963ccfc3f5194415f2cce7acc975942a8797fbabfb0aa1ed6f59326ae7f" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.77", "tauri-codegen", - "tauri-utils 2.0.0", + "tauri-utils 2.0.1", ] [[package]] @@ -7407,7 +7407,7 @@ dependencies = [ "schemars", "serde", "serde_json", - "tauri-utils 2.0.0", + "tauri-utils 2.0.1", "toml 0.8.2", "walkdir", ] @@ -7588,9 +7588,9 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2570e1f33f332a2d2d9967ebb3903bc4e1f92b9c47e4d1b302c10ea4153fcdbb" +checksum = "af12ad1af974b274ef1d32a94e6eba27a312b429ef28fcb98abc710df7f9151d" dependencies = [ "dpi", "gtk", @@ -7599,7 +7599,7 @@ dependencies = [ "raw-window-handle", "serde", "serde_json", - "tauri-utils 2.0.0", + "tauri-utils 2.0.1", "thiserror", "url", "windows 0.58.0", @@ -7607,9 +7607,9 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8147d8f9ed418d83a90af3d64fbdca5e0e924ae28e5351da88f9568169db8665" +checksum = "e45e88aa0b11b302d836e6ea3e507a6359044c4a8bc86b865ba99868c695753d" dependencies = [ "gtk", "http 1.1.0", @@ -7623,7 +7623,7 @@ dependencies = [ "softbuffer", "tao", "tauri-runtime", - "tauri-utils 2.0.0", + "tauri-utils 2.0.1", "url", "webkit2gtk", "webview2-com", @@ -7658,9 +7658,9 @@ dependencies = [ [[package]] name = "tauri-utils" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87856e9d7fa91fd710362f3c73fccbf6bfd036934908791e65bd803d54dc8a8" +checksum = "c38b0230d6880cf6dd07b6d7dd7789a0869f98ac12146e0d18d1c1049215a045" dependencies = [ "brotli", "cargo_metadata", diff --git a/clash-nyanpasu/backend/tauri/Cargo.toml b/clash-nyanpasu/backend/tauri/Cargo.toml index fc63aa84eb..25539cd0a5 100644 --- a/clash-nyanpasu/backend/tauri/Cargo.toml +++ b/clash-nyanpasu/backend/tauri/Cargo.toml @@ -90,7 +90,7 @@ base64 = "0.22" single-instance = "0.3.3" uuid = "1.7.0" image = "0.25.0" -fast_image_resize = "4" +fast_image_resize = "5" display-info = "0.5.0" # should be removed after upgrading to tauri v2 dashmap = "6" clap = { version = "4.5.4", features = ["derive"] } # add supports for commands diff --git a/clash-nyanpasu/frontend/interface/package.json b/clash-nyanpasu/frontend/interface/package.json index 3a2c0f84a1..f71ffcce8b 100644 --- a/clash-nyanpasu/frontend/interface/package.json +++ b/clash-nyanpasu/frontend/interface/package.json @@ -18,6 +18,6 @@ "swr": "2.2.5" }, "devDependencies": { - "@types/react": "18.3.10" + "@types/react": "18.3.11" } } diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 218182269b..9bb476b8e0 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -21,7 +21,7 @@ "@mui/material": "6.1.2", "@nyanpasu/interface": "workspace:^", "@nyanpasu/ui": "workspace:^", - "@tanstack/router-zod-adapter": "1.58.16", + "@tanstack/router-zod-adapter": "1.58.18", "@tauri-apps/api": "2.0.1", "@types/json-schema": "7.0.15", "ahooks": "3.8.1", @@ -55,8 +55,8 @@ "@emotion/react": "11.13.3", "@iconify/json": "2.2.256", "@monaco-editor/react": "4.6.0", - "@tanstack/react-router": "1.58.16", - "@tanstack/router-devtools": "1.58.16", + "@tanstack/react-router": "1.58.18", + "@tanstack/router-devtools": "1.58.18", "@tanstack/router-plugin": "1.58.12", "@tauri-apps/plugin-clipboard-manager": "2.0.0", "@tauri-apps/plugin-dialog": "2.0.0", @@ -64,9 +64,9 @@ "@tauri-apps/plugin-notification": "2.0.0", "@tauri-apps/plugin-os": "2.0.0", "@tauri-apps/plugin-process": "2.0.0", - "@tauri-apps/plugin-shell": "2.0.0-rc.1", - "@tauri-apps/plugin-updater": "2.0.0-rc.2", - "@types/react": "18.3.10", + "@tauri-apps/plugin-shell": "2.0.0", + "@tauri-apps/plugin-updater": "2.0.0", + "@types/react": "18.3.11", "@types/react-dom": "18.3.0", "@types/validator": "13.12.2", "@vitejs/plugin-react": "4.3.2", diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json index 9f028a7213..25294fdd19 100644 --- a/clash-nyanpasu/frontend/ui/package.json +++ b/clash-nyanpasu/frontend/ui/package.json @@ -24,7 +24,7 @@ "@radix-ui/react-scroll-area": "1.2.0", "@tauri-apps/api": "2.0.1", "@types/d3": "7.4.3", - "@types/react": "18.3.10", + "@types/react": "18.3.11", "@vitejs/plugin-react": "4.3.2", "ahooks": "3.8.1", "d3": "7.9.0", @@ -43,7 +43,7 @@ "clsx": "2.1.1", "d3-interpolate-path": "2.3.0", "sass": "1.79.4", - "tailwind-merge": "2.5.2", + "tailwind-merge": "2.5.3", "typescript-plugin-css-modules": "5.1.0", "vite-plugin-dts": "4.2.3" } diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index dfe3630f27..ebeac93eb7 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -60,7 +60,7 @@ "@commitlint/cli": "19.5.0", "@commitlint/config-conventional": "19.5.0", "@ianvs/prettier-plugin-sort-imports": "4.3.1", - "@tauri-apps/cli": "2.0.0", + "@tauri-apps/cli": "2.0.1", "@types/fs-extra": "11.0.4", "@types/lodash-es": "4.17.12", "@types/node": "22.7.4", @@ -82,7 +82,7 @@ "eslint-plugin-react": "7.37.0", "eslint-plugin-react-compiler": "0.0.0-experimental-f444e11-20240926", "eslint-plugin-react-hooks": "4.6.2", - "knip": "5.30.6", + "knip": "5.31.0", "lint-staged": "15.2.10", "npm-run-all2": "6.2.3", "postcss": "8.4.47", diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index e2de4f8778..35705f9b1d 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: 4.3.1 version: 4.3.1(prettier@3.3.3) '@tauri-apps/cli': - specifier: 2.0.0 - version: 2.0.0 + specifier: 2.0.1 + version: 2.0.1 '@types/fs-extra': specifier: 11.0.4 version: 11.0.4 @@ -96,8 +96,8 @@ importers: specifier: 4.6.2 version: 4.6.2(eslint@8.57.1) knip: - specifier: 5.30.6 - version: 5.30.6(@types/node@22.7.4)(typescript@5.6.2) + specifier: 5.31.0 + version: 5.31.0(@types/node@22.7.4)(typescript@5.6.2) lint-staged: specifier: 15.2.10 version: 15.2.10 @@ -166,16 +166,16 @@ importers: version: 2.0.1 ahooks: specifier: 3.8.1 - version: 3.8.1(react@19.0.0-rc-459fd418-20241001) + version: 3.8.1(react@19.0.0-rc-0751fac7-20241002) ofetch: specifier: 1.4.0 version: 1.4.0 react: specifier: rc - version: 19.0.0-rc-459fd418-20241001 + version: 19.0.0-rc-0751fac7-20241002 swr: specifier: 2.2.5 - version: 2.2.5(react@19.0.0-rc-459fd418-20241001) + version: 2.2.5(react@19.0.0-rc-0751fac7-20241002) devDependencies: '@types/react': specifier: npm:types-react@rc @@ -185,16 +185,16 @@ importers: dependencies: '@dnd-kit/core': specifier: 6.1.0 - version: 6.1.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 6.1.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) '@dnd-kit/sortable': specifier: 8.0.0 - version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) '@dnd-kit/utilities': specifier: 3.2.2 - version: 3.2.2(react@19.0.0-rc-459fd418-20241001) + version: 3.2.2(react@19.0.0-rc-0751fac7-20241002) '@emotion/styled': specifier: 11.13.0 - version: 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@juggle/resize-observer': specifier: 3.4.0 version: 3.4.0 @@ -203,13 +203,13 @@ importers: version: 0.3.0 '@mui/icons-material': specifier: 6.1.2 - version: 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@mui/lab': specifier: 6.0.0-beta.10 - version: 6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@mui/material': specifier: 6.1.2 - version: 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@nyanpasu/interface': specifier: workspace:^ version: link:../interface @@ -217,8 +217,8 @@ importers: specifier: workspace:^ version: link:../ui '@tanstack/router-zod-adapter': - specifier: 1.58.16 - version: 1.58.16(@tanstack/react-router@1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001))(zod@3.23.8) + specifier: 1.58.18 + version: 1.58.18(@tanstack/react-router@1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002))(zod@3.23.8) '@tauri-apps/api': specifier: 2.0.1 version: 2.0.1 @@ -227,10 +227,10 @@ importers: version: 7.0.15 ahooks: specifier: 3.8.1 - version: 3.8.1(react@19.0.0-rc-459fd418-20241001) + version: 3.8.1(react@19.0.0-rc-0751fac7-20241002) allotment: specifier: 1.20.2 - version: 1.20.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 1.20.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) country-code-emoji: specifier: 2.3.0 version: 2.3.0 @@ -239,61 +239,61 @@ importers: version: 1.11.13 framer-motion: specifier: 12.0.0-alpha.1 - version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) i18next: specifier: 23.15.1 version: 23.15.1 jotai: specifier: 2.10.0 - version: 2.10.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 2.10.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) json-schema: specifier: 0.4.0 version: 0.4.0 material-react-table: specifier: 3.0.1 - version: 3.0.1(peq6fo33qhv2vcmpc5se52zcjq) + version: 3.0.1(w2vi6jeujknbpyai7ldqznue3i) monaco-editor: specifier: 0.52.0 version: 0.52.0 mui-color-input: specifier: 4.0.1 - version: 4.0.1(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 4.0.1(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) react: specifier: rc - version: 19.0.0-rc-459fd418-20241001 + version: 19.0.0-rc-0751fac7-20241002 react-dom: specifier: rc - version: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + version: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) react-error-boundary: specifier: 4.0.13 - version: 4.0.13(react@19.0.0-rc-459fd418-20241001) + version: 4.0.13(react@19.0.0-rc-0751fac7-20241002) react-fast-marquee: specifier: 1.6.5 - version: 1.6.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 1.6.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) react-hook-form-mui: specifier: 7.2.1 - version: 7.2.1(5k75sgcnuv7p4nsjw2mqwkjksu) + version: 7.2.1(5lrfkqmph74nn44wur4owuft2y) react-i18next: specifier: 15.0.2 - version: 15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) react-markdown: specifier: 9.0.1 - version: 9.0.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 9.0.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) react-router-dom: specifier: 6.26.2 - version: 6.26.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 6.26.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) react-split-grid: specifier: 1.0.4 - version: 1.0.4(react@19.0.0-rc-459fd418-20241001) + version: 1.0.4(react@19.0.0-rc-0751fac7-20241002) react-use: specifier: 17.5.1 - version: 17.5.1(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 17.5.1(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) swr: specifier: 2.2.5 - version: 2.2.5(react@19.0.0-rc-459fd418-20241001) + version: 2.2.5(react@19.0.0-rc-0751fac7-20241002) virtua: specifier: 0.34.2 - version: 0.34.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 0.34.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) vite-bundle-visualizer: specifier: 1.2.1 version: 1.2.1(rollup@4.21.0) @@ -306,19 +306,19 @@ importers: version: 11.12.0 '@emotion/react': specifier: 11.13.3 - version: 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@iconify/json': specifier: 2.2.256 version: 2.2.256 '@monaco-editor/react': specifier: 4.6.0 - version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) '@tanstack/react-router': - specifier: 1.58.16 - version: 1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + specifier: 1.58.18 + version: 1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) '@tanstack/router-devtools': - specifier: 1.58.16 - version: 1.58.16(@tanstack/react-router@1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001))(csstype@3.1.3)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + specifier: 1.58.18 + version: 1.58.18(@tanstack/react-router@1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002))(csstype@3.1.3)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) '@tanstack/router-plugin': specifier: 1.58.12 version: 1.58.12(vite@5.4.8(@types/node@22.7.4)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0))(webpack-sources@3.2.3) @@ -341,11 +341,11 @@ importers: specifier: 2.0.0 version: 2.0.0 '@tauri-apps/plugin-shell': - specifier: 2.0.0-rc.1 - version: 2.0.0-rc.1 + specifier: 2.0.0 + version: 2.0.0 '@tauri-apps/plugin-updater': - specifier: 2.0.0-rc.2 - version: 2.0.0-rc.2 + specifier: 2.0.0 + version: 2.0.0 '@types/react': specifier: npm:types-react@rc version: types-react@19.0.0-rc.1 @@ -414,19 +414,19 @@ importers: version: 0.3.0 '@mui/icons-material': specifier: 6.1.2 - version: 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@mui/lab': specifier: 6.0.0-beta.10 - version: 6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@mui/material': specifier: 6.1.2 - version: 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@radix-ui/react-portal': specifier: 1.1.2 - version: 1.1.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 1.1.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@radix-ui/react-scroll-area': specifier: 1.2.0 - version: 1.2.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 1.2.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@tauri-apps/api': specifier: 2.0.1 version: 2.0.1 @@ -441,28 +441,28 @@ importers: version: 4.3.2(vite@5.4.8(@types/node@22.7.4)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0)) ahooks: specifier: 3.8.1 - version: 3.8.1(react@19.0.0-rc-459fd418-20241001) + version: 3.8.1(react@19.0.0-rc-0751fac7-20241002) d3: specifier: 7.9.0 version: 7.9.0 framer-motion: specifier: 12.0.0-alpha.1 - version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) react: specifier: rc - version: 19.0.0-rc-459fd418-20241001 + version: 19.0.0-rc-0751fac7-20241002 react-dom: specifier: rc - version: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + version: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) react-error-boundary: specifier: 4.0.13 - version: 4.0.13(react@19.0.0-rc-459fd418-20241001) + version: 4.0.13(react@19.0.0-rc-0751fac7-20241002) react-i18next: specifier: 15.0.2 - version: 15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) react-use: specifier: 17.5.1 - version: 17.5.1(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + version: 17.5.1(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) vite: specifier: 5.4.8 version: 5.4.8(@types/node@22.7.4)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0) @@ -472,7 +472,7 @@ importers: devDependencies: '@emotion/react': specifier: 11.13.3 - version: 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + version: 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@types/d3-interpolate-path': specifier: 2.0.3 version: 2.0.3 @@ -486,8 +486,8 @@ importers: specifier: 1.79.4 version: 1.79.4 tailwind-merge: - specifier: 2.5.2 - version: 2.5.2 + specifier: 2.5.3 + version: 2.5.3 typescript-plugin-css-modules: specifier: 5.1.0 version: 5.1.0(typescript@5.6.2) @@ -511,8 +511,8 @@ importers: version: 6.2.0 devDependencies: '@octokit/types': - specifier: 13.6.0 - version: 13.6.0 + specifier: 13.6.1 + version: 13.6.1 '@types/adm-zip': specifier: 0.5.5 version: 0.5.5 @@ -1780,8 +1780,8 @@ packages: '@octokit/types@12.6.0': resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} - '@octokit/types@13.6.0': - resolution: {integrity: sha512-CrooV/vKCXqwLa+osmHLIMUb87brpgUqlqkPGc6iE2wCkUvTrHiXFMhAKoDDaAAYJrtKtrFTgSQTg5nObBEaew==} + '@octokit/types@13.6.1': + resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==} '@octokit/webhooks-methods@5.1.0': resolution: {integrity: sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==} @@ -2211,8 +2211,8 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/react-router@1.58.16': - resolution: {integrity: sha512-3kRTNNI+xgpXHhpI5xMw/S0/6ff23k2ubKvkf0LPv1X4B/WzctnH1nfFPpQq9DK0HBtgG8TIk7+gIJx0mV8KOA==} + '@tanstack/react-router@1.58.18': + resolution: {integrity: sha512-F6svoFkbYWMiJ4EUsEe3GiLAUs5irZOPQu0vxOlc9hpthjU7JZT6p0pJ1DcDQJSyyMj/tqu7hCgv6B+6HjAs7Q==} engines: {node: '>=12'} peerDependencies: '@tanstack/router-generator': 1.58.12 @@ -2241,11 +2241,11 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@tanstack/router-devtools@1.58.16': - resolution: {integrity: sha512-dpAfsTdeABqRdZyDaKbNNfQKEE29evX3G/YspUNzSxGwVQH1mMgliUJoNQe/J3EEPSlJFaRVBJ25SrwfE685OQ==} + '@tanstack/router-devtools@1.58.18': + resolution: {integrity: sha512-3WcwJNdkL11ipojHSGL+5TwMGHBhe0eBw/8IPcCTN9ff/dVHKQrnBEMHwF5LbREibYD4y2IHW6HrZ9pmJVy09Q==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.58.16 + '@tanstack/react-router': ^1.58.18 react: '>=18' react-dom: '>=18' @@ -2268,8 +2268,8 @@ packages: webpack: optional: true - '@tanstack/router-zod-adapter@1.58.16': - resolution: {integrity: sha512-ZSBlAr8//Mtkiso3BJTBcfybO4k73jRmhnEvFdcBc/+bI9XeyH5bSix0+NH1jHdZOLlZkibBptF9OgwdRIGGew==} + '@tanstack/router-zod-adapter@1.58.18': + resolution: {integrity: sha512-IcKxtzNF0BGabY1X37EEl7ntcX3reI4EiMotNLrJqp/NGX1t6UtGeDHH5KkMnN/RwYF4Q7D3GokXa/SiD01Ypw==} engines: {node: '>=12'} peerDependencies: '@tanstack/react-router': '>=1.43.2' @@ -2298,68 +2298,68 @@ packages: '@tauri-apps/api@2.0.1': resolution: {integrity: sha512-eoQWT+Tq1qSwQpHV+nw1eNYe5B/nm1PoRjQCRiEOS12I1b+X4PUcREfXVX8dPcBT6GrzWGDtaecY0+1p0Rfqlw==} - '@tauri-apps/cli-darwin-arm64@2.0.0': - resolution: {integrity: sha512-+agYqg2c77imaMfKw7mzqecVIDGcwr6bZMdglJ808O2UjTFzMwnAam1sU26YBYU+IyIjwOu00fm9Azpal+N/Ew==} + '@tauri-apps/cli-darwin-arm64@2.0.1': + resolution: {integrity: sha512-oWjCZoFbm57V0eLEkIbc6aUmB4iW65QF7J8JVh5sNzH4xHGP9rzlQarbkg7LOn89z7mFSZpaLJAWlaaZwoV2Ug==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tauri-apps/cli-darwin-x64@2.0.0': - resolution: {integrity: sha512-keN2PLTTcZmbWwFMup/NGcshmvyLnhRPChO8lbm9C5a0IY7zUNQUD7/o/zIulQdLJqDxkdpWJ1j2jTycAtvtKQ==} + '@tauri-apps/cli-darwin-x64@2.0.1': + resolution: {integrity: sha512-bARd5yAnDGpG/FPhSh87+tzQ6D0TPyP2mZ5bg6cioeoXDmry68nT/FBzp87ySR1/KHvuhEQYWM/4RPrDjvI1Yg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0': - resolution: {integrity: sha512-FQJNrlCUBb9E7Fhp5ARy+Or8lSvorG41aVrfi0cGNvv1QlIGSj77TN7SKK+L1jAGzKj1Bl2kCZIESF6Zi8N/+Q==} + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.1': + resolution: {integrity: sha512-OK3/RpxujoZAUbV7GHe4IPAUsIO6IuWEHT++jHXP+YW5Y7QezGGjQRc43IlWaQYej/yE8wfcrwrbqisc5wtiCw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tauri-apps/cli-linux-arm64-gnu@2.0.0': - resolution: {integrity: sha512-TK3VrZG5LK1NGueKwnZA1/3gj/qkwry001MNCHXjT6394dwrDv+digCc9Qc569h+xeH/FF71jyoiRIu3gRE6iA==} + '@tauri-apps/cli-linux-arm64-gnu@2.0.1': + resolution: {integrity: sha512-MGSQJduiMEApspMK97mFt4kr6ig0OtxO5SUFpPDfYPw/XmY9utaRa9CEG6LcH8e0GN9xxYMhCv+FeU48spYPhA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tauri-apps/cli-linux-arm64-musl@2.0.0': - resolution: {integrity: sha512-E3hRmS/0m8YUYMTKZtBExpk/284CTi2nymks0dK0L1j+3KjffL7DiilnIfNFmTvWBgMrs0cVCtoaN/ba/A9mNA==} + '@tauri-apps/cli-linux-arm64-musl@2.0.1': + resolution: {integrity: sha512-R6+vgxaPpxgGi4suMkQgGuhjMbZzMJfVyWfv2DOE/xxOzSK1BAOc54/HOjfOLxlnkA6uD6V69MwCwXgxW00A2g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tauri-apps/cli-linux-x64-gnu@2.0.0': - resolution: {integrity: sha512-veX4BJp5xnW8KmxVjchWt4oZEIvKGhuSR7qU1WpqTR21e/eTe/ksGsdXPsqOKQvv/w1X6jhqmlPvhnFmDwUJ/w==} + '@tauri-apps/cli-linux-x64-gnu@2.0.1': + resolution: {integrity: sha512-xrasYQnUZVhKJhBxHAeu4KxZbofaQlsG9KfZ9p1Bx+hmjs5BuujzwMnXsVD2a4l6GPW6gwblf2a6d600rySmWQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tauri-apps/cli-linux-x64-musl@2.0.0': - resolution: {integrity: sha512-9Eso/8wbsWbOyd9PZEIzN/48ZQJrUGQqGZtglcjUku0lO76mnX0fOnit4nQ57Oj0wezJPhv4mgSseG1OsTIVzw==} + '@tauri-apps/cli-linux-x64-musl@2.0.1': + resolution: {integrity: sha512-SPk+EzRTlbvk46p5aURc7O4GihzxbqG80m74vstm0rolnmQ0FX3qqIh3as3cQpDiZWLod4j6EEmX0mTU3QpvXA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tauri-apps/cli-win32-arm64-msvc@2.0.0': - resolution: {integrity: sha512-ky8vWAuDUf8WGt9+a0G/EbU0OhdIkogelh9qjIYGHbyEYAJqXfN5P40aHUEg3y8ngQ0YGwRX5ePsQsSZiiR5PQ==} + '@tauri-apps/cli-win32-arm64-msvc@2.0.1': + resolution: {integrity: sha512-LAELK01eOMyEt+JZLmx4EUOdRuPYr1a+mHjlxAxCnCaS3dpeg/c5/NMZfbRAJbAH4id+STRHIfPXTdCT2zUNAw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tauri-apps/cli-win32-ia32-msvc@2.0.0': - resolution: {integrity: sha512-uD45cLZ/EBaT8o4a27tHW7t5UKFplnvDLt/uSUaCpJ3NyOTV6nMXOUrJBe+hH9hSBohqNAF7LEyYo1p932DWFg==} + '@tauri-apps/cli-win32-ia32-msvc@2.0.1': + resolution: {integrity: sha512-eMUgOS4mAusk5njU2TBxBjCUO1P4cV4uzY5CHihysoXSL2TVQdWrXT42VGeoahJh+yeQWkYFka2s4Bu0iWDMXg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@tauri-apps/cli-win32-x64-msvc@2.0.0': - resolution: {integrity: sha512-oFlo14YMsvyhJHmmHgRuOpJ1L9w15193c1Nfj1DksS2LHj6tLzirI7YrAF9inY/XjHFjNHzYPmBpABibkf/9wQ==} + '@tauri-apps/cli-win32-x64-msvc@2.0.1': + resolution: {integrity: sha512-U9esAOcFIv80/slzlpwjkG31Wx1OqbfDgC5KjGT1Dd9iUOSuJZCwbiY7m3rYG2I6RWLfd9zhNu86CVohsKjBfA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tauri-apps/cli@2.0.0': - resolution: {integrity: sha512-xxmPllRa6w/LRRcPczST3yHrYoi8l6ZZmzwabEmM0cgDdhVDmX+Y4oDJkiKD+8cVdxwwEzIuIKuaCwsX8iNsgA==} + '@tauri-apps/cli@2.0.1': + resolution: {integrity: sha512-fCheW0iWYWUtFV3ui3HlMhk3ZJpAQ5KJr7B7UmfhDzBSy1h5JBdrCtvDwy+3AcPN+Fg5Ey3JciF8zEP8eBx+vQ==} engines: {node: '>= 10'} hasBin: true @@ -2381,11 +2381,11 @@ packages: '@tauri-apps/plugin-process@2.0.0': resolution: {integrity: sha512-OYzi0GnkrF4NAnsHZU7U3tjSoP0PbeAlO7T1Z+vJoBUH9sFQ1NSLqWYWQyf8hcb3gVWe7P1JggjiskO+LST1ug==} - '@tauri-apps/plugin-shell@2.0.0-rc.1': - resolution: {integrity: sha512-JtNROc0rqEwN/g93ig5pK4cl1vUo2yn+osCpY9de64cy/d9hRzof7AuYOgvt/Xcd5VPQmlgo2AGvUh5sQRSR1A==} + '@tauri-apps/plugin-shell@2.0.0': + resolution: {integrity: sha512-OpW2+ycgJLrEoZityWeWYk+6ZWP9VyiAfbO+N/O8VfLkqyOym8kXh7odKDfINx9RAotkSGBtQM4abyKfJDkcUg==} - '@tauri-apps/plugin-updater@2.0.0-rc.2': - resolution: {integrity: sha512-Ngvpa/km/00KASvOsFqRQbVf/6BaAX/gYwQs9eFxjygDpxxlZkZDVP1Fg0urW8s5dY7ELD6UAFB/ZI/g8D0QvQ==} + '@tauri-apps/plugin-updater@2.0.0': + resolution: {integrity: sha512-N0cl71g7RPr7zK2Fe5aoIwzw14NcdLcz7XMGFWZVjprsqgDRWoxbnUkknyCQMZthjhGkppCd/wN2MIsUz+eAhQ==} '@trivago/prettier-plugin-sort-imports@4.3.0': resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==} @@ -4659,6 +4659,10 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + jiti@2.1.2: + resolution: {integrity: sha512-cYNjJus5X9J4jLzTaI8rYoIq1k6YySiA1lK4wxSnOrBRXkbVyreZfhoboJhsUmwgU82lpPjj1IoU7Ggrau8r3g==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -4757,8 +4761,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - knip@5.30.6: - resolution: {integrity: sha512-YkcnRVl0N99xZ7eaXE7KlH/4cPTCn6BGuk9KxINEdCMFN3yita2vGBizApy97ZOHgghy8tb589gQ3xvLMFIO4w==} + knip@5.31.0: + resolution: {integrity: sha512-4hR+qHx/id7mniCWWUqA4MXwGjYFN75xv3qLmEkl9Hm6eCKAhv0wGP0CyrXKUYxVyDplJQsqQaAlsjuRKYsdPA==} engines: {node: '>=18.6.0'} hasBin: true peerDependencies: @@ -5766,10 +5770,10 @@ packages: resolution: {integrity: sha512-FqHzVpsWddE5j0BtvjPiPGYiXWDat5EQWGl2oG8xVQs2zJ1KH0zHcu5a7ZdGVgKJWGvYl731J0/k/oOtFSiWfg==} hasBin: true - react-dom@19.0.0-rc-459fd418-20241001: - resolution: {integrity: sha512-dpNLhqGW+vxg596Cbi14SqXEnEl/hk0cTtTpP7auCBe+FWhhLfyvPCl5mPspQ0qzQtu5k48fVsHEZjoA/dkM3w==} + react-dom@19.0.0-rc-0751fac7-20241002: + resolution: {integrity: sha512-RpPpmpjWsKI4ThsphySlyFMfXx5Fof8Q8k9oPKqxEAR5Yq20DbQiY/fj+QYQipI0p3zptRSnovaRAKFnmidHKA==} peerDependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 react-error-boundary@4.0.13: resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} @@ -5871,8 +5875,8 @@ packages: react: '*' react-dom: '*' - react@19.0.0-rc-459fd418-20241001: - resolution: {integrity: sha512-KzJyYiR1buScnzs9gNGRLr8277h7iAZgaGg/X8ELyl9rwSYdiuXHp6Syfii4SiEQjF25H5qBS83ZPn4kTEXfUw==} + react@19.0.0-rc-0751fac7-20241002: + resolution: {integrity: sha512-qbwgll2JbsH16OHaNhbUtS55eyjgf9f1i682crOjcHLns9pyFvPjeiJIztBnhAk9GVS26ZiI00O2oA8AV/FGDA==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -6171,8 +6175,8 @@ packages: sax@1.3.0: resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - scheduler@0.25.0-rc-459fd418-20241001: - resolution: {integrity: sha512-dstjmvNS3cwmWtm88wRyCiGu5zCiyYCQ0+iRKLG8VlvlbJkALTOx2oXJDDPChG2CKg+ubEG7IoMjagUdbrrBCw==} + scheduler@0.25.0-rc-0751fac7-20241002: + resolution: {integrity: sha512-1aCByRIndzfrl7Qh2Uh/hhOyXK20pCre8XwR1RKOKK9FvWAt8iukv3Xtpf04yJajXW6zRUfSv6dRZFL9E0ZMuw==} screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} @@ -6548,8 +6552,8 @@ packages: resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} engines: {node: '>=10.0.0'} - tailwind-merge@2.5.2: - resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + tailwind-merge@2.5.3: + resolution: {integrity: sha512-d9ZolCAIzom1nf/5p4LdD5zvjmgSxY0BGgdSvmXIoMYAiPdAW/dSpP7joCDYFY7r/HkEa2qmPtkgsu0xjQeQtw==} tailwindcss-textshadow@2.1.3: resolution: {integrity: sha512-FGVHfK+xnV879VSQDeRvY61Aa+b0GDiGaFBPwCOKvqIrK57GyepWJL1GydjtGOLHE9qqphFucRNj9fHramCzNg==} @@ -7598,29 +7602,29 @@ snapshots: '@ctrl/tinycolor@4.1.0': {} - '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-459fd418-20241001)': + '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-0751fac7-20241002)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 tslib: 2.6.2 - '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: - '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-459fd418-20241001) - '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-459fd418-20241001) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-0751fac7-20241002) + '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-0751fac7-20241002) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) tslib: 2.6.2 - '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) - '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-459fd418-20241001) - react: 19.0.0-rc-459fd418-20241001 + '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) + '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-0751fac7-20241002) + react: 19.0.0-rc-0751fac7-20241002 tslib: 2.6.2 - '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-459fd418-20241001)': + '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-0751fac7-20241002)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 tslib: 2.6.2 '@dual-bundle/import-meta-resolve@4.1.0': {} @@ -7677,17 +7681,17 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.24.8 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.0 '@emotion/serialize': 1.3.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-459fd418-20241001) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-0751fac7-20241002) '@emotion/utils': 1.4.0 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -7709,16 +7713,16 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.24.8 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@emotion/serialize': 1.3.0 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-459fd418-20241001) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-0751fac7-20241002) '@emotion/utils': 1.4.0 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -7726,9 +7730,9 @@ snapshots: '@emotion/unitless@0.9.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-459fd418-20241001)': + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-0751fac7-20241002)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 '@emotion/utils@1.4.0': {} @@ -7909,11 +7913,11 @@ snapshots: '@floating-ui/core': 1.6.1 '@floating-ui/utils': 0.2.2 - '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@floating-ui/dom': 1.6.5 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) '@floating-ui/utils@0.2.2': {} @@ -8039,253 +8043,253 @@ snapshots: monaco-editor: 0.52.0 state-local: 1.0.7 - '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@monaco-editor/loader': 1.4.0(monaco-editor@0.52.0) monaco-editor: 0.52.0 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) - '@mui/base@5.0.0-beta.58(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/base@5.0.0-beta.58(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.0.0-rc.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 6.0.0-rc.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 '@mui/core-downloads-tracker@6.1.2': {} - '@mui/icons-material@6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/icons-material@6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 + '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/lab@6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/lab@6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/system': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/system': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@mui/core-downloads-tracker': 6.1.2 - '@mui/system': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/system': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.2(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.2(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) react-is: 18.3.1 - react-transition-group: 4.4.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + react-transition-group: 4.4.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@5.16.6(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/private-theming@5.16.6(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/utils': 5.16.6(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@6.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/private-theming@6.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/utils': 6.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@6.1.2(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/private-theming@6.1.2(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/utils': 6.1.2(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.2(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)': + '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) - '@mui/styled-engine@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)': + '@mui/styled-engine@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 '@emotion/sheet': 1.4.0 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) - '@mui/styled-engine@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)': + '@mui/styled-engine@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 '@emotion/sheet': 1.4.0 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) - '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/private-theming': 5.16.6(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001) + '@mui/private-theming': 5.16.6(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002) '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 5.16.6(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/system@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/system@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/private-theming': 6.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001) + '@mui/private-theming': 6.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/styled-engine': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002) '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/system@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/system@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/private-theming': 6.1.2(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001) + '@mui/private-theming': 6.1.2(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/styled-engine': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002) '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.2(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.2(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 '@mui/types@7.2.17(types-react@19.0.0-rc.1)': optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@5.16.6(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/utils@5.16.6(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@mui/types': 7.2.17(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.13 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@6.0.0-rc.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/utils@6.0.0-rc.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@mui/types': 7.2.17(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.12 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@6.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/utils@6.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@mui/types': 7.2.17(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.12 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@6.1.2(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/utils@6.1.2(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@mui/types': 7.2.17(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.13 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/utils': 5.16.6(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@types/react-transition-group': 4.4.11 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) - react-transition-group: 4.4.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) + react-transition-group: 4.4.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) dayjs: 1.11.13 transitivePeerDependencies: - '@types/react' @@ -8309,7 +8313,7 @@ snapshots: '@octokit/core': 6.1.2 '@octokit/oauth-app': 7.1.2 '@octokit/plugin-paginate-rest': 11.3.0(@octokit/core@6.1.2) - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 '@octokit/webhooks': 13.2.7 '@octokit/auth-app@7.1.0': @@ -8318,7 +8322,7 @@ snapshots: '@octokit/auth-oauth-user': 5.1.1 '@octokit/request': 9.1.1 '@octokit/request-error': 6.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 lru-cache: 10.2.2 universal-github-app-jwt: 2.2.0 universal-user-agent: 7.0.2 @@ -8328,14 +8332,14 @@ snapshots: '@octokit/auth-oauth-device': 7.1.1 '@octokit/auth-oauth-user': 5.1.1 '@octokit/request': 9.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 7.0.2 '@octokit/auth-oauth-device@7.1.1': dependencies: '@octokit/oauth-methods': 5.1.2 '@octokit/request': 9.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 7.0.2 '@octokit/auth-oauth-user@5.1.1': @@ -8343,7 +8347,7 @@ snapshots: '@octokit/auth-oauth-device': 7.1.1 '@octokit/oauth-methods': 5.1.2 '@octokit/request': 9.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 7.0.2 '@octokit/auth-token@4.0.0': {} @@ -8353,7 +8357,7 @@ snapshots: '@octokit/auth-unauthenticated@6.1.0': dependencies: '@octokit/request-error': 6.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 '@octokit/core@5.2.0': dependencies: @@ -8361,7 +8365,7 @@ snapshots: '@octokit/graphql': 7.1.0 '@octokit/request': 8.4.0 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 @@ -8371,30 +8375,30 @@ snapshots: '@octokit/graphql': 8.1.1 '@octokit/request': 9.1.1 '@octokit/request-error': 6.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 '@octokit/endpoint@10.1.1': dependencies: - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 7.0.2 '@octokit/endpoint@9.0.5': dependencies: - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 6.0.1 '@octokit/graphql@7.1.0': dependencies: '@octokit/request': 8.4.0 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 6.0.1 '@octokit/graphql@8.1.1': dependencies: '@octokit/request': 9.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 7.0.2 '@octokit/oauth-app@7.1.2': @@ -8415,7 +8419,7 @@ snapshots: '@octokit/oauth-authorization-url': 7.1.1 '@octokit/request': 9.1.1 '@octokit/request-error': 6.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 '@octokit/openapi-types@20.0.0': {} @@ -8430,7 +8434,7 @@ snapshots: '@octokit/plugin-paginate-rest@11.3.0(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 '@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0)': dependencies: @@ -8445,50 +8449,50 @@ snapshots: '@octokit/plugin-rest-endpoint-methods@13.2.1(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 '@octokit/plugin-retry@7.1.1(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 '@octokit/request-error': 6.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 bottleneck: 2.19.5 '@octokit/plugin-throttling@9.3.0(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 bottleneck: 2.19.5 '@octokit/request-error@5.1.0': dependencies: - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 deprecation: 2.3.1 once: 1.4.0 '@octokit/request-error@6.1.1': dependencies: - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 '@octokit/request@8.4.0': dependencies: '@octokit/endpoint': 9.0.5 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 6.0.1 '@octokit/request@9.1.1': dependencies: '@octokit/endpoint': 10.1.1 '@octokit/request-error': 6.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 universal-user-agent: 7.0.2 '@octokit/types@12.6.0': dependencies: '@octokit/openapi-types': 20.0.0 - '@octokit/types@13.6.0': + '@octokit/types@13.6.1': dependencies: '@octokit/openapi-types': 22.2.0 @@ -8512,82 +8516,82 @@ snapshots: '@radix-ui/primitive@1.1.0': {} - '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-context@1.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-context@1.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-portal@1.1.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-portal@1.1.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-presence@1.1.1(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-presence@1.1.1(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-scroll-area@1.2.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-scroll-area@1.2.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-context': 1.1.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-presence': 1.1.1(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.1(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1)': + '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -8852,43 +8856,43 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/react-router@1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@tanstack/react-router@1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@tanstack/history': 1.58.15 - '@tanstack/react-store': 0.5.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + '@tanstack/react-store': 0.5.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 optionalDependencies: '@tanstack/router-generator': 1.58.12 - '@tanstack/react-store@0.5.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@tanstack/react-store@0.5.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@tanstack/store': 0.5.5 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) - use-sync-external-store: 1.2.2(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) + use-sync-external-store: 1.2.2(react@19.0.0-rc-0751fac7-20241002) - '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@tanstack/table-core': 8.20.5 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) - '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: '@tanstack/virtual-core': 3.10.6 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) - '@tanstack/router-devtools@1.58.16(@tanstack/react-router@1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001))(csstype@3.1.3)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)': + '@tanstack/router-devtools@1.58.18(@tanstack/react-router@1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002))(csstype@3.1.3)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)': dependencies: - '@tanstack/react-router': 1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + '@tanstack/react-router': 1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) clsx: 2.1.1 goober: 2.1.14(csstype@3.1.3) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) transitivePeerDependencies: - csstype @@ -8925,9 +8929,9 @@ snapshots: - supports-color - webpack-sources - '@tanstack/router-zod-adapter@1.58.16(@tanstack/react-router@1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001))(zod@3.23.8)': + '@tanstack/router-zod-adapter@1.58.18(@tanstack/react-router@1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002))(zod@3.23.8)': dependencies: - '@tanstack/react-router': 1.58.16(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + '@tanstack/react-router': 1.58.18(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) zod: 3.23.8 '@tanstack/store@0.5.5': {} @@ -8946,48 +8950,48 @@ snapshots: '@tauri-apps/api@2.0.1': {} - '@tauri-apps/cli-darwin-arm64@2.0.0': + '@tauri-apps/cli-darwin-arm64@2.0.1': optional: true - '@tauri-apps/cli-darwin-x64@2.0.0': + '@tauri-apps/cli-darwin-x64@2.0.1': optional: true - '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0': + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.1': optional: true - '@tauri-apps/cli-linux-arm64-gnu@2.0.0': + '@tauri-apps/cli-linux-arm64-gnu@2.0.1': optional: true - '@tauri-apps/cli-linux-arm64-musl@2.0.0': + '@tauri-apps/cli-linux-arm64-musl@2.0.1': optional: true - '@tauri-apps/cli-linux-x64-gnu@2.0.0': + '@tauri-apps/cli-linux-x64-gnu@2.0.1': optional: true - '@tauri-apps/cli-linux-x64-musl@2.0.0': + '@tauri-apps/cli-linux-x64-musl@2.0.1': optional: true - '@tauri-apps/cli-win32-arm64-msvc@2.0.0': + '@tauri-apps/cli-win32-arm64-msvc@2.0.1': optional: true - '@tauri-apps/cli-win32-ia32-msvc@2.0.0': + '@tauri-apps/cli-win32-ia32-msvc@2.0.1': optional: true - '@tauri-apps/cli-win32-x64-msvc@2.0.0': + '@tauri-apps/cli-win32-x64-msvc@2.0.1': optional: true - '@tauri-apps/cli@2.0.0': + '@tauri-apps/cli@2.0.1': optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 2.0.0 - '@tauri-apps/cli-darwin-x64': 2.0.0 - '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0 - '@tauri-apps/cli-linux-arm64-gnu': 2.0.0 - '@tauri-apps/cli-linux-arm64-musl': 2.0.0 - '@tauri-apps/cli-linux-x64-gnu': 2.0.0 - '@tauri-apps/cli-linux-x64-musl': 2.0.0 - '@tauri-apps/cli-win32-arm64-msvc': 2.0.0 - '@tauri-apps/cli-win32-ia32-msvc': 2.0.0 - '@tauri-apps/cli-win32-x64-msvc': 2.0.0 + '@tauri-apps/cli-darwin-arm64': 2.0.1 + '@tauri-apps/cli-darwin-x64': 2.0.1 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.1 + '@tauri-apps/cli-linux-arm64-gnu': 2.0.1 + '@tauri-apps/cli-linux-arm64-musl': 2.0.1 + '@tauri-apps/cli-linux-x64-gnu': 2.0.1 + '@tauri-apps/cli-linux-x64-musl': 2.0.1 + '@tauri-apps/cli-win32-arm64-msvc': 2.0.1 + '@tauri-apps/cli-win32-ia32-msvc': 2.0.1 + '@tauri-apps/cli-win32-x64-msvc': 2.0.1 '@tauri-apps/plugin-clipboard-manager@2.0.0': dependencies: @@ -9013,11 +9017,11 @@ snapshots: dependencies: '@tauri-apps/api': 2.0.1 - '@tauri-apps/plugin-shell@2.0.0-rc.1': + '@tauri-apps/plugin-shell@2.0.0': dependencies: '@tauri-apps/api': 2.0.1 - '@tauri-apps/plugin-updater@2.0.0-rc.2': + '@tauri-apps/plugin-updater@2.0.0': dependencies: '@tauri-apps/api': 2.0.1 @@ -9476,14 +9480,14 @@ snapshots: clean-stack: 5.2.0 indent-string: 5.0.0 - ahooks@3.8.1(react@19.0.0-rc-459fd418-20241001): + ahooks@3.8.1(react@19.0.0-rc-0751fac7-20241002): dependencies: '@babel/runtime': 7.24.8 dayjs: 1.11.12 intersection-observer: 0.12.2 js-cookie: 3.0.5 lodash: 4.17.21 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 react-fast-compare: 3.2.2 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 @@ -9525,16 +9529,16 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - allotment@1.20.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + allotment@1.20.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: classnames: 2.5.1 eventemitter3: 5.0.1 lodash.clamp: 4.0.3 lodash.debounce: 4.0.8 lodash.isequal: 4.5.0 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) - use-resize-observer: 9.1.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) + use-resize-observer: 9.1.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) ansi-align@2.0.0: dependencies: @@ -10994,13 +10998,13 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: tslib: 2.6.2 optionalDependencies: '@emotion/is-prop-valid': 1.3.0 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) fs-extra@11.2.0: dependencies: @@ -11610,12 +11614,14 @@ snapshots: jiti@1.21.6: {} + jiti@2.1.2: {} + jju@1.4.0: {} - jotai@2.10.0(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1): + jotai@2.10.0(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1): optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 js-cookie@2.2.1: {} @@ -11683,7 +11689,7 @@ snapshots: kind-of@6.0.3: {} - knip@5.30.6(@types/node@22.7.4)(typescript@5.6.2): + knip@5.31.0(@types/node@22.7.4)(typescript@5.6.2): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 @@ -11691,7 +11697,7 @@ snapshots: easy-table: 1.2.0 enhanced-resolve: 5.17.1 fast-glob: 3.3.2 - jiti: 1.21.6 + jiti: 2.1.2 js-yaml: 4.1.0 minimist: 1.2.8 picocolors: 1.1.0 @@ -11862,19 +11868,19 @@ snapshots: escape-string-regexp: 4.0.0 optional: true - material-react-table@3.0.1(peq6fo33qhv2vcmpc5se52zcjq): + material-react-table@3.0.1(w2vi6jeujknbpyai7ldqznue3i): dependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/icons-material': 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/icons-material': 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) '@tanstack/match-sorter-utils': 8.19.4 - '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) - '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) + '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) + '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) highlight-words: 1.2.2 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) mathml-tag-names@2.1.3: {} @@ -12207,14 +12213,14 @@ snapshots: muggle-string@0.4.1: {} - mui-color-input@4.0.1(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1): + mui-color-input@4.0.1(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1): dependencies: '@ctrl/tinycolor': 4.1.0 - '@emotion/react': 11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + '@emotion/react': 11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -12224,15 +12230,15 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nano-css@5.6.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + nano-css@5.6.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: '@jridgewell/sourcemap-codec': 1.5.0 css-tree: 1.1.3 csstype: 3.1.3 fastest-stable-stringify: 2.0.2 inline-style-prefixer: 7.0.1 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) rtl-css-js: 1.16.1 stacktrace-js: 2.0.2 stylis: 4.3.2 @@ -12367,7 +12373,7 @@ snapshots: '@octokit/plugin-retry': 7.1.1(@octokit/core@6.1.2) '@octokit/plugin-throttling': 9.3.0(@octokit/core@6.1.2) '@octokit/request-error': 6.1.1 - '@octokit/types': 13.6.0 + '@octokit/types': 13.6.1 ofetch@1.4.0: dependencies: @@ -12775,50 +12781,50 @@ snapshots: - supports-color - utf-8-validate - react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001): + react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002): dependencies: - react: 19.0.0-rc-459fd418-20241001 - scheduler: 0.25.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 + scheduler: 0.25.0-rc-0751fac7-20241002 - react-error-boundary@4.0.13(react@19.0.0-rc-459fd418-20241001): + react-error-boundary@4.0.13(react@19.0.0-rc-0751fac7-20241002): dependencies: '@babel/runtime': 7.24.5 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 react-fast-compare@3.2.2: {} - react-fast-marquee@1.6.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + react-fast-marquee@1.6.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) - react-hook-form-mui@7.2.1(5k75sgcnuv7p4nsjw2mqwkjksu): + react-hook-form-mui@7.2.1(5lrfkqmph74nn44wur4owuft2y): dependencies: - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-459fd418-20241001 - react-hook-form: 7.52.1(react@19.0.0-rc-459fd418-20241001) + '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-0751fac7-20241002 + react-hook-form: 7.52.1(react@19.0.0-rc-0751fac7-20241002) optionalDependencies: - '@mui/icons-material': 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1) + '@mui/icons-material': 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1) - react-hook-form@7.52.1(react@19.0.0-rc-459fd418-20241001): + react-hook-form@7.52.1(react@19.0.0-rc-0751fac7-20241002): dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 - react-i18next@15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + react-i18next@15.0.2(i18next@23.15.1)(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: '@babel/runtime': 7.25.6 html-parse-stringify: 3.0.1 i18next: 23.15.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 optionalDependencies: - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) react-is@16.13.1: {} react-is@18.3.1: {} - react-markdown@9.0.1(react@19.0.0-rc-459fd418-20241001)(types-react@19.0.0-rc.1): + react-markdown@9.0.1(react@19.0.0-rc-0751fac7-20241002)(types-react@19.0.0-rc.1): dependencies: '@types/hast': 3.0.4 '@types/react': types-react@19.0.0-rc.1 @@ -12826,7 +12832,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 mdast-util-to-hast: 13.1.0 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 remark-parse: 11.0.0 remark-rehype: 11.1.0 unified: 11.0.4 @@ -12837,39 +12843,39 @@ snapshots: react-refresh@0.14.2: {} - react-router-dom@6.26.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + react-router-dom@6.26.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: '@remix-run/router': 1.19.2 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) - react-router: 6.26.2(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) + react-router: 6.26.2(react@19.0.0-rc-0751fac7-20241002) - react-router@6.26.2(react@19.0.0-rc-459fd418-20241001): + react-router@6.26.2(react@19.0.0-rc-0751fac7-20241002): dependencies: '@remix-run/router': 1.19.2 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 - react-split-grid@1.0.4(react@19.0.0-rc-459fd418-20241001): + react-split-grid@1.0.4(react@19.0.0-rc-0751fac7-20241002): dependencies: prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 split-grid: 1.0.11 - react-transition-group@4.4.5(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + react-transition-group@4.4.5(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: '@babel/runtime': 7.25.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) - react-universal-interface@0.6.2(react@19.0.0-rc-459fd418-20241001)(tslib@2.6.2): + react-universal-interface@0.6.2(react@19.0.0-rc-0751fac7-20241002)(tslib@2.6.2): dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 tslib: 2.6.2 - react-use@17.5.1(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + react-use@17.5.1(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: '@types/js-cookie': 2.2.7 '@xobotyi/scrollbar-width': 1.9.5 @@ -12877,10 +12883,10 @@ snapshots: fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 - nano-css: 5.6.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001) - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) - react-universal-interface: 0.6.2(react@19.0.0-rc-459fd418-20241001)(tslib@2.6.2) + nano-css: 5.6.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) + react-universal-interface: 0.6.2(react@19.0.0-rc-0751fac7-20241002)(tslib@2.6.2) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 @@ -12888,7 +12894,7 @@ snapshots: ts-easing: 0.2.0 tslib: 2.6.2 - react@19.0.0-rc-459fd418-20241001: {} + react@19.0.0-rc-0751fac7-20241002: {} read-cache@1.0.0: dependencies: @@ -13184,7 +13190,7 @@ snapshots: sax@1.3.0: {} - scheduler@0.25.0-rc-459fd418-20241001: {} + scheduler@0.25.0-rc-0751fac7-20241002: {} screenfull@5.2.0: {} @@ -13592,11 +13598,11 @@ snapshots: svg-tags@1.0.0: {} - swr@2.2.5(react@19.0.0-rc-459fd418-20241001): + swr@2.2.5(react@19.0.0-rc-0751fac7-20241002): dependencies: client-only: 0.0.1 - react: 19.0.0-rc-459fd418-20241001 - use-sync-external-store: 1.2.2(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + use-sync-external-store: 1.2.2(react@19.0.0-rc-0751fac7-20241002) synckit@0.9.1: dependencies: @@ -13611,7 +13617,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwind-merge@2.5.2: {} + tailwind-merge@2.5.3: {} tailwindcss-textshadow@2.1.3: dependencies: @@ -14035,15 +14041,15 @@ snapshots: dependencies: prepend-http: 1.0.4 - use-resize-observer@9.1.0(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + use-resize-observer@9.1.0(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): dependencies: '@juggle/resize-observer': 3.4.0 - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) - use-sync-external-store@1.2.2(react@19.0.0-rc-459fd418-20241001): + use-sync-external-store@1.2.2(react@19.0.0-rc-0751fac7-20241002): dependencies: - react: 19.0.0-rc-459fd418-20241001 + react: 19.0.0-rc-0751fac7-20241002 utf-8-validate@5.0.10: dependencies: @@ -14066,10 +14072,10 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - virtua@0.34.2(react-dom@19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001))(react@19.0.0-rc-459fd418-20241001): + virtua@0.34.2(react-dom@19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002))(react@19.0.0-rc-0751fac7-20241002): optionalDependencies: - react: 19.0.0-rc-459fd418-20241001 - react-dom: 19.0.0-rc-459fd418-20241001(react@19.0.0-rc-459fd418-20241001) + react: 19.0.0-rc-0751fac7-20241002 + react-dom: 19.0.0-rc-0751fac7-20241002(react@19.0.0-rc-0751fac7-20241002) vite-bundle-visualizer@1.2.1(rollup@4.21.0): dependencies: diff --git a/clash-nyanpasu/scripts/package.json b/clash-nyanpasu/scripts/package.json index 947abed32a..afc99d6188 100644 --- a/clash-nyanpasu/scripts/package.json +++ b/clash-nyanpasu/scripts/package.json @@ -9,7 +9,7 @@ "p-retry": "6.2.0" }, "devDependencies": { - "@octokit/types": "13.6.0", + "@octokit/types": "13.6.1", "@types/adm-zip": "0.5.5", "adm-zip": "0.5.16", "colorize-template": "1.0.0", diff --git a/lede/include/kernel-6.6 b/lede/include/kernel-6.6 index d096bfabd0..ee524ccdd6 100644 --- a/lede/include/kernel-6.6 +++ b/lede/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .53 -LINUX_KERNEL_HASH-6.6.53 = 285d181d1b252b0bf905f040d094215cf183ac98c31a17f9cce9f3537ef4d779 +LINUX_VERSION-6.6 = .54 +LINUX_KERNEL_HASH-6.6.54 = 5fae869d6a24055c16ffc2d92669e3fb2b258e34d36c850bb8cf9def417ecfa0 diff --git a/lede/target/linux/generic/backport-6.6/780-08-v6.9-r8169-add-support-for-RTL8126A.patch b/lede/target/linux/generic/backport-6.6/780-08-v6.9-r8169-add-support-for-RTL8126A.patch index 65aa5449ec..63f135e393 100644 --- a/lede/target/linux/generic/backport-6.6/780-08-v6.9-r8169-add-support-for-RTL8126A.patch +++ b/lede/target/linux/generic/backport-6.6/780-08-v6.9-r8169-add-support-for-RTL8126A.patch @@ -332,7 +332,7 @@ Signed-off-by: David S. Miller default: --- a/drivers/net/ethernet/realtek/r8169_phy_config.c +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c -@@ -1102,6 +1102,12 @@ static void rtl8125b_hw_phy_config(struc +@@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struc rtl8125b_config_eee_phy(phydev); } @@ -345,7 +345,7 @@ Signed-off-by: David S. Miller void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev, enum mac_version ver) { -@@ -1152,6 +1158,7 @@ void r8169_hw_phy_config(struct rtl8169_ +@@ -1154,6 +1160,7 @@ void r8169_hw_phy_config(struct rtl8169_ [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config, [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config, [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config, diff --git a/lede/target/linux/generic/backport-6.6/851-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch b/lede/target/linux/generic/backport-6.6/851-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch index d0f7df5007..6a09e61974 100644 --- a/lede/target/linux/generic/backport-6.6/851-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch +++ b/lede/target/linux/generic/backport-6.6/851-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch @@ -51,8 +51,8 @@ Signed-off-by: Manivannan Sadhasivam static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = { .name = "qcom-sdx65m", .fw = "qcom/sdx65m/xbl.elf", -@@ -600,6 +620,8 @@ static const struct pci_device_id mhi_pc - .driver_data = (kernel_ulong_t) &mhi_telit_fn990_info }, +@@ -609,6 +629,8 @@ static const struct pci_device_id mhi_pc + .driver_data = (kernel_ulong_t) &mhi_telit_fe990a_info }, { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308), .driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info }, + { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0309), diff --git a/lede/target/linux/generic/hack-6.6/952-add-net-conntrack-events-support-multiple-registrant.patch b/lede/target/linux/generic/hack-6.6/952-add-net-conntrack-events-support-multiple-registrant.patch index d9eb2fb1e9..9ba3803749 100644 --- a/lede/target/linux/generic/hack-6.6/952-add-net-conntrack-events-support-multiple-registrant.patch +++ b/lede/target/linux/generic/hack-6.6/952-add-net-conntrack-events-support-multiple-registrant.patch @@ -299,7 +299,7 @@ Signed-off-by: Zhi Chen void nf_conntrack_ecache_work(struct net *net, enum nf_ct_ecache_state state) --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c -@@ -723,12 +723,19 @@ static size_t ctnetlink_nlmsg_size(const +@@ -720,12 +720,19 @@ static size_t ctnetlink_nlmsg_size(const } static int @@ -319,7 +319,7 @@ Signed-off-by: Zhi Chen struct nf_conn *ct = item->ct; struct sk_buff *skb; unsigned int type; -@@ -3751,11 +3758,17 @@ static int ctnetlink_stat_exp_cpu(struct +@@ -3748,11 +3755,17 @@ static int ctnetlink_stat_exp_cpu(struct } #ifdef CONFIG_NF_CONNTRACK_EVENTS @@ -337,7 +337,7 @@ Signed-off-by: Zhi Chen static const struct nfnl_callback ctnl_cb[IPCTNL_MSG_MAX] = { [IPCTNL_MSG_CT_NEW] = { -@@ -3854,8 +3867,12 @@ static int __net_init ctnetlink_net_init +@@ -3851,8 +3864,12 @@ static int __net_init ctnetlink_net_init static void ctnetlink_net_pre_exit(struct net *net) { #ifdef CONFIG_NF_CONNTRACK_EVENTS diff --git a/lede/target/linux/generic/pending-6.6/360-selftests-bpf-portability-of-unprivileged-tests.patch b/lede/target/linux/generic/pending-6.6/360-selftests-bpf-portability-of-unprivileged-tests.patch deleted file mode 100644 index 0f28834d48..0000000000 --- a/lede/target/linux/generic/pending-6.6/360-selftests-bpf-portability-of-unprivileged-tests.patch +++ /dev/null @@ -1,26 +0,0 @@ -From ecb8f9a7d69698ce20fc6f4d107718d56fa861df Mon Sep 17 00:00:00 2001 -From: Tony Ambardar -Date: Sat, 9 Mar 2024 16:44:53 -0800 -Subject: [PATCH] selftests/bpf: Improve portability of unprivileged tests - -The addition of general support for unprivileged tests in test_loader.c -breaks building test_verifier on non-glibc (e.g. musl) systems, due to the -inclusion of glibc extension '' in 'unpriv_helpers.c'. However, -the header is actually not needed, so remove it to restore building. - -Fixes: 1d56ade032a4 ("selftests/bpf: Unprivileged tests for test_loader.c") -Signed-off-by: Tony Ambardar ---- - tools/testing/selftests/bpf/unpriv_helpers.c | 1 - - 1 file changed, 1 deletion(-) - ---- a/tools/testing/selftests/bpf/unpriv_helpers.c -+++ b/tools/testing/selftests/bpf/unpriv_helpers.c -@@ -2,7 +2,6 @@ - - #include - #include --#include - #include - - #include "unpriv_helpers.h" diff --git a/lede/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/lede/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index be7405c1a2..2b9543da6d 100644 --- a/lede/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/lede/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch @@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c -@@ -8327,7 +8327,7 @@ static int nft_register_flowtable_net_ho +@@ -8333,7 +8333,7 @@ static int nft_register_flowtable_net_ho err = flowtable->data.type->setup(&flowtable->data, hook->ops.dev, FLOW_BLOCK_BIND); diff --git a/lede/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch b/lede/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch index 9bdfcc7486..e4c8caff22 100644 --- a/lede/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch +++ b/lede/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch @@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c -@@ -300,6 +300,7 @@ static void quirk_mmio_always_on(struct +@@ -313,6 +313,7 @@ static void quirk_mmio_always_on(struct DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on); @@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos /* * The Mellanox Tavor device gives false positive parity errors. Disable * parity error reporting. -@@ -3488,6 +3489,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I +@@ -3501,6 +3502,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata); @@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos /* * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. * To work around this, query the size it should be configured to by the -@@ -3513,6 +3516,8 @@ static void quirk_intel_ntb(struct pci_d +@@ -3526,6 +3529,8 @@ static void quirk_intel_ntb(struct pci_d DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb); @@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos /* * Some BIOS implementations leave the Intel GPU interrupts enabled, even * though no one is handling them (e.g., if the i915 driver is never -@@ -3551,6 +3556,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN +@@ -3564,6 +3569,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); diff --git a/lede/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch b/lede/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch index 3172ad5a16..3d3b034199 100644 --- a/lede/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch +++ b/lede/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch @@ -16,7 +16,7 @@ Signed-off-by: Álvaro Fernández Rojas --- a/drivers/char/hw_random/bcm2835-rng.c +++ b/drivers/char/hw_random/bcm2835-rng.c -@@ -169,6 +169,7 @@ static int bcm2835_rng_probe(struct plat +@@ -171,6 +171,7 @@ static int bcm2835_rng_probe(struct plat priv->rng.init = bcm2835_rng_init; priv->rng.read = bcm2835_rng_read; priv->rng.cleanup = bcm2835_rng_cleanup; diff --git a/lede/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch b/lede/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch index 49fc7e638c..b5e9b4bdd5 100644 --- a/lede/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch +++ b/lede/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch @@ -104,7 +104,7 @@ Subject: [PATCH] kernel: add block fit partition parser /* everything is up and running, commence */ err = xa_insert(&disk->part_tbl, partno, bdev, GFP_KERNEL); if (err) -@@ -622,6 +633,11 @@ static bool blk_add_partition(struct gen +@@ -624,6 +635,11 @@ static bool blk_add_partition(struct gen (state->parts[p].flags & ADDPART_FLAG_RAID)) md_autodetect_dev(part->bd_dev); diff --git a/lede/target/linux/x86/config-6.6 b/lede/target/linux/x86/config-6.6 index 6b8876e8bf..15e7532796 100644 --- a/lede/target/linux/x86/config-6.6 +++ b/lede/target/linux/x86/config-6.6 @@ -35,6 +35,7 @@ CONFIG_AMD_NB=y # CONFIG_AMD_PMC is not set CONFIG_ARCH_32BIT_OFF_T=y CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y diff --git a/mieru/README.md b/mieru/README.md index 86d4dbb3cc..fb395f4d0d 100644 --- a/mieru/README.md +++ b/mieru/README.md @@ -31,6 +31,7 @@ For an explanation of the mieru protocol, see [mieru Proxy Protocol](./docs/prot 1. The client software supports Windows, Mac OS, Linux and Android. Android clients include - [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) version 1.3.1 or above, with [mieru plugin](https://github.com/enfein/NekoBoxPlugins). - [Exclave](https://github.com/dyhkwong/Exclave), with [mieru plugin](https://github.com/dyhkwong/Exclave/releases?q=mieru-plugin). + - [husi](https://github.com/xchacha20-poly1305/husi) with [mieru plugin](https://github.com/xchacha20-poly1305/husi/releases?q=plugin-mieru). 1. If you need advanced features like global proxy or customized routing rules, you can use mieru as the backend of a proxy platform such as [Xray](https://github.com/XTLS/Xray-core) and [sing-box](https://github.com/SagerNet/sing-box). ## User Guide diff --git a/mieru/README.zh_CN.md b/mieru/README.zh_CN.md index 3bf9076cbd..1e66be0cc3 100644 --- a/mieru/README.zh_CN.md +++ b/mieru/README.zh_CN.md @@ -29,6 +29,7 @@ mieru 的翻墙原理与 shadowsocks / v2ray 等软件类似,在客户端和 1. 客户端软件支持 Windows, Mac OS, Linux 和 Android 系统。Android 客户端包括 - [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) 1.3.1 及以上版本,并安装 [mieru 插件](https://github.com/enfein/NekoBoxPlugins)。 - [Exclave](https://github.com/dyhkwong/Exclave) 并安装 [mieru 插件](https://github.com/dyhkwong/Exclave/releases?q=mieru-plugin)。 + - [husi](https://github.com/xchacha20-poly1305/husi) 并安装 [mieru 插件](https://github.com/xchacha20-poly1305/husi/releases?q=plugin-mieru)。 1. 如果需要全局代理或自定义路由规则等高级功能,可以将 mieru 作为 [Xray](https://github.com/XTLS/Xray-core) 和 [sing-box](https://github.com/SagerNet/sing-box) 等代理平台的后端。 ## 使用教程 diff --git a/mieru/apis/client/doc.go b/mieru/apis/client/doc.go new file mode 100644 index 0000000000..e11e6d5cc0 --- /dev/null +++ b/mieru/apis/client/doc.go @@ -0,0 +1,18 @@ +// Copyright (C) 2024 mieru authors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// Package client provides mieru client APIs for third party applications +// to integrate mieru protocol. +package client diff --git a/mieru/apis/client/interface.go b/mieru/apis/client/interface.go new file mode 100644 index 0000000000..6b14c7fa42 --- /dev/null +++ b/mieru/apis/client/interface.go @@ -0,0 +1,42 @@ +// Copyright (C) 2024 mieru authors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package client + +import ( + "context" + "net" +) + +// Client contains methods supported by a mieru client. +type Client interface { + ClientConfiguration + ClientLifecycle + + DialContext(ctx context.Context) (net.Conn, error) +} + +// ClientConfiguration contains methods to manage proxy client configuration. +type ClientConfiguration interface { + Load() error + Store() error +} + +// ClientLifecycle contains methods to manage proxy client lifecycle. +type ClientLifecycle interface { + Start() error + Stop() error + IsRunning() bool +} diff --git a/mieru/apis/client/mieru.go b/mieru/apis/client/mieru.go new file mode 100644 index 0000000000..0dd01039e2 --- /dev/null +++ b/mieru/apis/client/mieru.go @@ -0,0 +1,35 @@ +// Copyright (C) 2024 mieru authors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package client + +import ( + "sync" + + "github.com/enfein/mieru/v3/pkg/log" +) + +// mieruClient is the official implementation of mieru client APIs. +type mieruClient struct { + initTask sync.Once +} + +// initOnce should be called when constructing the mieru client. +func (mc *mieruClient) initOnce() { + mc.initTask.Do(func() { + // Disable log. + log.SetFormatter(&log.NilFormatter{}) + }) +} diff --git a/mieru/pkg/log/formatter_test.go b/mieru/pkg/log/formatter_test.go new file mode 100644 index 0000000000..96c7f18764 --- /dev/null +++ b/mieru/pkg/log/formatter_test.go @@ -0,0 +1,153 @@ +// Copyright (C) 2024 mieru authors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package log + +import ( + "bytes" + "os" + "strings" + "testing" + "time" +) + +func TestCliFormatter(t *testing.T) { + SetFormatter(&CliFormatter{}) + SetLevel("TRACE") + var buf bytes.Buffer + var msg string + SetOutput(&buf) + defer func() { + SetLevel("INFO") + SetOutput(os.Stdout) + }() + + Tracef("This is a test message") + msg = buf.String() + checkLogLevel(t, msg, "TRACE", false) + buf.Reset() + + Debugf("This is a test message") + msg = buf.String() + checkLogLevel(t, msg, "DEBUG", false) + buf.Reset() + + Infof("This is a test message") + msg = buf.String() + checkLogLevel(t, msg, "INFO", false) + buf.Reset() + + Warnf("This is a test message") + msg = buf.String() + checkLogLevel(t, msg, "WARNING", false) + buf.Reset() + + Errorf("This is a test message") + msg = buf.String() + checkLogLevel(t, msg, "ERROR", false) + buf.Reset() +} + +func TestDaemonFormatter(t *testing.T) { + SetFormatter(&DaemonFormatter{}) + SetLevel("TRACE") + var buf bytes.Buffer + var msg string + SetOutput(&buf) + defer func() { + SetFormatter(&CliFormatter{}) + SetLevel("INFO") + SetOutput(os.Stdout) + }() + + Tracef("This is a test message") + msg = buf.String() + checkLogTimestamp(t, msg) + checkLogLevel(t, msg, "TRACE", true) + buf.Reset() + + Debugf("This is a test message") + msg = buf.String() + checkLogTimestamp(t, msg) + checkLogLevel(t, msg, "DEBUG", true) + buf.Reset() + + Infof("This is a test message") + msg = buf.String() + checkLogTimestamp(t, msg) + checkLogLevel(t, msg, "INFO", true) + buf.Reset() + + Warnf("This is a test message") + msg = buf.String() + checkLogTimestamp(t, msg) + checkLogLevel(t, msg, "WARNING", true) + buf.Reset() + + Errorf("This is a test message") + msg = buf.String() + checkLogTimestamp(t, msg) + checkLogLevel(t, msg, "ERROR", true) + buf.Reset() +} + +func TestNilFormatter(t *testing.T) { + SetFormatter(&NilFormatter{}) + SetLevel("TRACE") + var buf bytes.Buffer + var msg string + SetOutput(&buf) + defer func() { + SetFormatter(&CliFormatter{}) + SetLevel("INFO") + SetOutput(os.Stdout) + }() + + Tracef("This is a test message") + Debugf("This is a test message") + Infof("This is a test message") + Warnf("This is a test message") + Errorf("This is a test message") + msg = buf.String() + if len(msg) > 0 { + t.Errorf("Got unexpected log printed with NilFormatter: %q", msg) + } +} + +func checkLogLevel(t *testing.T, s, level string, shouldPresent bool) { + t.Helper() + if shouldPresent { + if !strings.Contains(s, level) { + t.Errorf("%q should be printed in %q", level, s) + } + } else { + if strings.Contains(s, level) { + t.Errorf("%q should not be printed in %q", level, s) + } + } +} + +func checkLogTimestamp(t *testing.T, s string) { + t.Helper() + parts := strings.Split(s, " ") + if len(parts) == 0 { + t.Errorf("Invalid log message: %q", s) + return + } + _, err := time.Parse(time.RFC3339, parts[0]) + if err != nil { + t.Errorf("Invalid timestamp: %s, %v", parts[0], err) + } +} diff --git a/mihomo/adapter/outbound/direct.go b/mihomo/adapter/outbound/direct.go index 15f081f2bf..9ee237fa13 100644 --- a/mihomo/adapter/outbound/direct.go +++ b/mihomo/adapter/outbound/direct.go @@ -32,7 +32,7 @@ func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ... return nil, err } } - opts = append(opts, dialer.WithResolver(resolver.DefaultResolver)) + opts = append(opts, dialer.WithResolver(resolver.DirectHostResolver)) c, err := dialer.DialContext(ctx, "tcp", metadata.RemoteAddress(), d.Base.DialOptions(opts...)...) if err != nil { return nil, err @@ -49,7 +49,7 @@ func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, } // net.UDPConn.WriteTo only working with *net.UDPAddr, so we need a net.UDPAddr if !metadata.Resolved() { - ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, resolver.DefaultResolver) + ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, resolver.DirectHostResolver) if err != nil { return nil, errors.New("can't resolve ip") } diff --git a/mihomo/adapter/outbound/util.go b/mihomo/adapter/outbound/util.go index 2c85c7c8c1..9f0636a6e1 100644 --- a/mihomo/adapter/outbound/util.go +++ b/mihomo/adapter/outbound/util.go @@ -55,7 +55,7 @@ func resolveUDPAddr(ctx context.Context, network, address string) (*net.UDPAddr, return nil, err } - ip, err := resolver.ResolveProxyServerHost(ctx, host) + ip, err := resolver.ResolveIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err != nil { return nil, err } @@ -71,12 +71,12 @@ func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, pref var fallback netip.Addr switch prefer { case C.IPv4Only: - ip, err = resolver.ResolveIPv4ProxyServerHost(ctx, host) + ip, err = resolver.ResolveIPv4WithResolver(ctx, host, resolver.ProxyServerHostResolver) case C.IPv6Only: - ip, err = resolver.ResolveIPv6ProxyServerHost(ctx, host) + ip, err = resolver.ResolveIPv6WithResolver(ctx, host, resolver.ProxyServerHostResolver) case C.IPv6Prefer: var ips []netip.Addr - ips, err = resolver.LookupIPProxyServerHost(ctx, host) + ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err == nil { for _, addr := range ips { if addr.Is6() { @@ -92,7 +92,7 @@ func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, pref default: // C.IPv4Prefer, C.DualStack and other var ips []netip.Addr - ips, err = resolver.LookupIPProxyServerHost(ctx, host) + ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver) if err == nil { for _, addr := range ips { if addr.Is4() { diff --git a/mihomo/adapter/outbound/wireguard.go b/mihomo/adapter/outbound/wireguard.go index 3928ab1b7e..03145c3700 100644 --- a/mihomo/adapter/outbound/wireguard.go +++ b/mihomo/adapter/outbound/wireguard.go @@ -44,7 +44,7 @@ type WireGuard struct { device wireguardGoDevice tunDevice wireguard.Device dialer proxydialer.SingDialer - resolver *dns.Resolver + resolver resolver.Resolver refP *refProxyAdapter initOk atomic.Bool @@ -296,7 +296,7 @@ func NewWireGuard(option WireGuardOption) (*WireGuard, error) { for i := range nss { nss[i].ProxyAdapter = refP } - outbound.resolver, _ = dns.NewResolver(dns.Config{ + outbound.resolver = dns.NewResolver(dns.Config{ Main: nss, IPv6: has6, }) diff --git a/mihomo/component/dialer/dialer.go b/mihomo/component/dialer/dialer.go index 3dfd3159bb..4fd051ef44 100644 --- a/mihomo/component/dialer/dialer.go +++ b/mihomo/component/dialer/dialer.go @@ -340,26 +340,18 @@ func parseAddr(ctx context.Context, network, address string, preferResolver reso return nil, "-1", err } + if preferResolver == nil { + preferResolver = resolver.ProxyServerHostResolver + } + var ips []netip.Addr switch network { case "tcp4", "udp4": - if preferResolver == nil { - ips, err = resolver.LookupIPv4ProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPv4WithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPv4WithResolver(ctx, host, preferResolver) case "tcp6", "udp6": - if preferResolver == nil { - ips, err = resolver.LookupIPv6ProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPv6WithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPv6WithResolver(ctx, host, preferResolver) default: - if preferResolver == nil { - ips, err = resolver.LookupIPProxyServerHost(ctx, host) - } else { - ips, err = resolver.LookupIPWithResolver(ctx, host, preferResolver) - } + ips, err = resolver.LookupIPWithResolver(ctx, host, preferResolver) } if err != nil { return nil, "-1", fmt.Errorf("dns resolve failed: %w", err) diff --git a/mihomo/component/resolver/resolver.go b/mihomo/component/resolver/resolver.go index 8b180c1e47..1eb3d642ef 100644 --- a/mihomo/component/resolver/resolver.go +++ b/mihomo/component/resolver/resolver.go @@ -19,9 +19,12 @@ var ( // DefaultResolver aim to resolve ip DefaultResolver Resolver - // ProxyServerHostResolver resolve ip to proxies server host + // ProxyServerHostResolver resolve ip for proxies server host, only nil when DefaultResolver is nil ProxyServerHostResolver Resolver + // DirectHostResolver resolve ip for direct outbound host, only nil when DefaultResolver is nil + DirectHostResolver Resolver + // SystemResolver always using system dns, and was init in dns module SystemResolver Resolver @@ -193,58 +196,10 @@ func ResolveIP(ctx context.Context, host string) (netip.Addr, error) { return ResolveIPWithResolver(ctx, host, DefaultResolver) } -// ResolveIPv4ProxyServerHost proxies server host only -func ResolveIPv4ProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPv4WithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIPv4(ctx, host) -} - -// ResolveIPv6ProxyServerHost proxies server host only -func ResolveIPv6ProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPv6WithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIPv6(ctx, host) -} - -// ResolveProxyServerHost proxies server host only -func ResolveProxyServerHost(ctx context.Context, host string) (netip.Addr, error) { - if ProxyServerHostResolver != nil { - return ResolveIPWithResolver(ctx, host, ProxyServerHostResolver) - } - return ResolveIP(ctx, host) -} - -func LookupIPv6ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPv6WithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIPv6(ctx, host) -} - -func LookupIPv4ProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPv4WithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIPv4(ctx, host) -} - -func LookupIPProxyServerHost(ctx context.Context, host string) ([]netip.Addr, error) { - if ProxyServerHostResolver != nil { - return LookupIPWithResolver(ctx, host, ProxyServerHostResolver) - } - return LookupIP(ctx, host) -} - func ResetConnection() { if DefaultResolver != nil { go DefaultResolver.ResetConnection() } - if ProxyServerHostResolver != nil { - go ProxyServerHostResolver.ResetConnection() - } } func SortationAddr(ips []netip.Addr) (ipv4s, ipv6s []netip.Addr) { diff --git a/mihomo/config/config.go b/mihomo/config/config.go index 3117853cbd..3ca57a4598 100644 --- a/mihomo/config/config.go +++ b/mihomo/config/config.go @@ -160,6 +160,8 @@ type DNS struct { Hosts *trie.DomainTrie[resolver.HostValue] NameServerPolicy []dns.Policy ProxyServerNameserver []dns.NameServer + DirectNameServer []dns.NameServer + DirectFollowPolicy bool } // Profile config @@ -203,25 +205,27 @@ type RawCors struct { } type RawDNS struct { - Enable bool `yaml:"enable" json:"enable"` - PreferH3 bool `yaml:"prefer-h3" json:"prefer-h3"` - IPv6 bool `yaml:"ipv6" json:"ipv6"` - IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` - UseHosts bool `yaml:"use-hosts" json:"use-hosts"` - UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` - RespectRules bool `yaml:"respect-rules" json:"respect-rules"` - NameServer []string `yaml:"nameserver" json:"nameserver"` - Fallback []string `yaml:"fallback" json:"fallback"` - FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` - Listen string `yaml:"listen" json:"listen"` - EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"` - FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"` - FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"` - FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"` - DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"` - CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"` - NameServerPolicy *orderedmap.OrderedMap[string, any] `yaml:"nameserver-policy" json:"nameserver-policy"` - ProxyServerNameserver []string `yaml:"proxy-server-nameserver" json:"proxy-server-nameserver"` + Enable bool `yaml:"enable" json:"enable"` + PreferH3 bool `yaml:"prefer-h3" json:"prefer-h3"` + IPv6 bool `yaml:"ipv6" json:"ipv6"` + IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"` + UseHosts bool `yaml:"use-hosts" json:"use-hosts"` + UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"` + RespectRules bool `yaml:"respect-rules" json:"respect-rules"` + NameServer []string `yaml:"nameserver" json:"nameserver"` + Fallback []string `yaml:"fallback" json:"fallback"` + FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"` + Listen string `yaml:"listen" json:"listen"` + EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"` + FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"` + FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"` + FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"` + DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"` + CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"` + NameServerPolicy *orderedmap.OrderedMap[string, any] `yaml:"nameserver-policy" json:"nameserver-policy"` + ProxyServerNameserver []string `yaml:"proxy-server-nameserver" json:"proxy-server-nameserver"` + DirectNameServer []string `yaml:"direct-nameserver" json:"direct-nameserver"` + DirectNameServerFollowPolicy bool `yaml:"direct-nameserver-follow-policy" json:"direct-nameserver-follow-policy"` } type RawFallbackFilter struct { @@ -1423,6 +1427,11 @@ func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], rul return nil, err } + if dnsCfg.DirectNameServer, err = parseNameServer(cfg.DirectNameServer, false, cfg.PreferH3); err != nil { + return nil, err + } + dnsCfg.DirectFollowPolicy = cfg.DirectNameServerFollowPolicy + if len(cfg.DefaultNameserver) == 0 { return nil, errors.New("default nameserver should have at least one nameserver") } diff --git a/mihomo/dns/patch_android.go b/mihomo/dns/patch_android.go index 5a98e86c44..8e744fcd81 100644 --- a/mihomo/dns/patch_android.go +++ b/mihomo/dns/patch_android.go @@ -12,9 +12,6 @@ func FlushCacheWithDefaultResolver() { if r := resolver.DefaultResolver; r != nil { r.ClearCache() } - if r := resolver.ProxyServerHostResolver; r != nil { - r.ClearCache() - } if r := resolver.SystemResolver; r != nil { r.ClearCache() } diff --git a/mihomo/dns/resolver.go b/mihomo/dns/resolver.go index ea8888cce7..9f7e28f38c 100644 --- a/mihomo/dns/resolver.go +++ b/mihomo/dns/resolver.go @@ -427,6 +427,8 @@ type Config struct { Main, Fallback []NameServer Default []NameServer ProxyServer []NameServer + DirectServer []NameServer + DirectFollowPolicy bool IPv6 bool IPv6Timeout uint EnhancedMode C.DNSMode @@ -446,7 +448,25 @@ func (config Config) newCache() dnsCache { } } -func NewResolver(config Config) (r *Resolver, pr *Resolver) { +type Resolvers struct { + *Resolver + ProxyResolver *Resolver + DirectResolver *Resolver +} + +func (rs Resolvers) ClearCache() { + rs.Resolver.ClearCache() + rs.ProxyResolver.ClearCache() + rs.DirectResolver.ClearCache() +} + +func (rs Resolvers) ResetConnection() { + rs.Resolver.ResetConnection() + rs.ProxyResolver.ResetConnection() + rs.DirectResolver.ResetConnection() +} + +func NewResolver(config Config) (rs Resolvers) { defaultResolver := &Resolver{ main: transform(config.Default, nil), cache: config.newCache(), @@ -480,7 +500,7 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { return } - r = &Resolver{ + r := &Resolver{ ipv6: config.IPv6, main: cacheTransform(config.Main), cache: config.newCache(), @@ -488,9 +508,10 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond, } r.defaultResolver = defaultResolver + rs.Resolver = r if len(config.ProxyServer) != 0 { - pr = &Resolver{ + rs.ProxyResolver = &Resolver{ ipv6: config.IPv6, main: cacheTransform(config.ProxyServer), cache: config.newCache(), @@ -499,8 +520,20 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { } } + if len(config.DirectServer) != 0 { + rs.DirectResolver = &Resolver{ + ipv6: config.IPv6, + main: cacheTransform(config.DirectServer), + cache: config.newCache(), + hosts: config.Hosts, + ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond, + } + } + if len(config.Fallback) != 0 { r.fallback = cacheTransform(config.Fallback) + r.fallbackIPFilters = config.FallbackIPFilter + r.fallbackDomainFilters = config.FallbackDomainFilter } if len(config.Policy) != 0 { @@ -529,9 +562,11 @@ func NewResolver(config Config) (r *Resolver, pr *Resolver) { } } insertPolicy(nil) + + if rs.DirectResolver != nil && config.DirectFollowPolicy { + rs.DirectResolver.policy = r.policy + } } - r.fallbackIPFilters = config.FallbackIPFilter - r.fallbackDomainFilters = config.FallbackDomainFilter return } diff --git a/mihomo/dns/system.go b/mihomo/dns/system.go index f05cb0f3d9..9fb803ddcb 100644 --- a/mihomo/dns/system.go +++ b/mihomo/dns/system.go @@ -61,7 +61,7 @@ func newSystemClient() *systemClient { } func init() { - r, _ := NewResolver(Config{}) + r := NewResolver(Config{}) c := newSystemClient() c.defaultNS = transform([]NameServer{{Addr: "114.114.114.114:53"}, {Addr: "8.8.8.8:53"}}, nil) r.main = []dnsClient{c} diff --git a/mihomo/docs/config.yaml b/mihomo/docs/config.yaml index 15bcf6076d..e75e5bd59b 100644 --- a/mihomo/docs/config.yaml +++ b/mihomo/docs/config.yaml @@ -294,10 +294,15 @@ dns: # - tcp://1.1.1.1 # - 'tcp://1.1.1.1#ProxyGroupName' # 指定 DNS 过代理查询,ProxyGroupName 为策略组名或节点名,过代理配置优先于配置出口网卡,当找不到策略组或节点名则设置为出口网卡 - # 专用于节点域名解析的 DNS 服务器,非必要配置项 + # 专用于节点域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 # proxy-server-nameserver: - # - https://dns.google/dns-query - # - tls://one.one.one.one + # - https://dns.google/dns-query + # - tls://one.one.one.one + + # 专用于direct出口域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置 + # direct-nameserver: + # - system:// + # direct-nameserver-follow-policy: false # 是否遵循nameserver-policy,默认为不遵守,仅当direct-nameserver不为空时生效 # 配置 fallback 使用条件 # fallback-filter: diff --git a/mihomo/hub/executor/executor.go b/mihomo/hub/executor/executor.go index 10ea21b064..b8d9cddb96 100644 --- a/mihomo/hub/executor/executor.go +++ b/mihomo/hub/executor/executor.go @@ -235,6 +235,8 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { resolver.DefaultResolver = nil resolver.DefaultHostMapper = nil resolver.DefaultLocalServer = nil + resolver.ProxyServerHostResolver = nil + resolver.DirectHostResolver = nil dns.ReCreateServer("", nil, nil) return } @@ -251,10 +253,12 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { Default: c.DefaultNameserver, Policy: c.NameServerPolicy, ProxyServer: c.ProxyServerNameserver, + DirectServer: c.DirectNameServer, + DirectFollowPolicy: c.DirectFollowPolicy, CacheAlgorithm: c.CacheAlgorithm, } - r, pr := dns.NewResolver(cfg) + r := dns.NewResolver(cfg) m := dns.NewEnhancer(cfg) // reuse cache of old host mapper @@ -264,14 +268,22 @@ func updateDNS(c *config.DNS, generalIPv6 bool) { resolver.DefaultResolver = r resolver.DefaultHostMapper = m - resolver.DefaultLocalServer = dns.NewLocalServer(r, m) + resolver.DefaultLocalServer = dns.NewLocalServer(r.Resolver, m) resolver.UseSystemHosts = c.UseSystemHosts - if pr.Invalid() { - resolver.ProxyServerHostResolver = pr + if r.ProxyResolver.Invalid() { + resolver.ProxyServerHostResolver = r.ProxyResolver + } else { + resolver.ProxyServerHostResolver = r.Resolver } - dns.ReCreateServer(c.Listen, r, m) + if r.DirectResolver.Invalid() { + resolver.DirectHostResolver = r.DirectResolver + } else { + resolver.DirectHostResolver = r.Resolver + } + + dns.ReCreateServer(c.Listen, r.Resolver, m) } func updateHosts(tree *trie.DomainTrie[resolver.HostValue]) { diff --git a/openwrt-packages/adguardhome/Makefile b/openwrt-packages/adguardhome/Makefile index e26427f8c5..b0e0efdd65 100644 --- a/openwrt-packages/adguardhome/Makefile +++ b/openwrt-packages/adguardhome/Makefile @@ -6,12 +6,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=adguardhome -PKG_VERSION:=0.107.52 +PKG_VERSION:=0.107.53 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/AdGuardHome/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=de6d99c4420d131b76e5d22b58ac91159e74e5783f02ada8b2f993f353e254f9 +PKG_HASH:=dd2a60ff8806d2fa39fe1c41bf3534c2231132147f23e337f98b3bd83a4be654 PKG_BUILD_DIR:=$(BUILD_DIR)/AdGuardHome-$(PKG_VERSION) PKG_LICENSE:=GPL-3.0-only @@ -58,7 +58,7 @@ define Download/adguardhome-frontend URL:=https://github.com/AdguardTeam/AdGuardHome/releases/download/v$(PKG_VERSION)/ URL_FILE:=AdGuardHome_frontend.tar.gz FILE:=$(FRONTEND_FILE) - HASH:=af9ae57b55a09a0aaf7c9a69a46734827443f98135d4c4b176874de3f9a449d8 + HASH:=69047225e2a5474e55fa56d12b71ba4e58e36b5af299f27099d216e1e7ab7f43 endef define Build/Prepare diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh index 184eae7522..4a90994b4a 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh @@ -890,6 +890,7 @@ run_redir() { esac ;; TCP) + [ "$TCP_UDP" = "1" ] && echolog "UDP节点:与TCP节点相同" tcp_node_socks=1 tcp_node_socks_bind_local=$(config_t_get global tcp_node_socks_bind_local 1) tcp_node_socks_bind="127.0.0.1" @@ -2008,10 +2009,12 @@ TCP_NODE=$(config_t_get global tcp_node nil) UDP_REDIR_PORT=1051 UDP_NODE=$(config_t_get global udp_node nil) TCP_UDP=0 -[ "$UDP_NODE" == "tcp" ] && { +if [ "$UDP_NODE" == "tcp" ]; then UDP_NODE=$TCP_NODE TCP_UDP=1 -} +elif [ "$UDP_NODE" == "$TCP_NODE" ]; then + TCP_UDP=1 +fi [ "$ENABLED" == 1 ] && { [ "$TCP_NODE" != "nil" ] && [ "$(config_get_type $TCP_NODE nil)" != "nil" ] && ENABLED_DEFAULT_ACL=1 [ "$UDP_NODE" != "nil" ] && [ "$(config_get_type $UDP_NODE nil)" != "nil" ] && ENABLED_DEFAULT_ACL=1 diff --git a/shadowsocks-rust/Cargo.lock b/shadowsocks-rust/Cargo.lock index 4853142248..4306d9c33a 100644 --- a/shadowsocks-rust/Cargo.lock +++ b/shadowsocks-rust/Cargo.lock @@ -204,22 +204,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-compression" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" -dependencies = [ - "brotli", - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", - "zstd", - "zstd-safe", -] - [[package]] name = "async-task" version = "4.7.1" @@ -372,9 +356,9 @@ dependencies = [ [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -563,18 +547,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.18" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" +checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.18" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" +checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" dependencies = [ "anstream", "anstyle", @@ -1808,9 +1792,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "iprange" @@ -1921,7 +1905,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -2799,7 +2783,6 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ - "async-compression", "base64 0.22.1", "bytes", "encoding_rs", @@ -2835,7 +2818,6 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-rustls 0.26.0", - "tokio-util", "tower-service", "url", "wasm-bindgen", @@ -3688,12 +3670,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" dependencies = [ "rustix", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -3982,9 +3964,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tun2" -version = "3.1.5" +version = "3.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65414b3733383dcd25fa2f4dafac78dad8154cdc41d99c68152b834b1cf66c6b" +checksum = "c131f1a66eab9362e16acf067533a41a31285d560b4339dfe236e59f504548d1" dependencies = [ "bytes", "cfg-if", @@ -4283,7 +4265,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/shadowsocks-rust/Cargo.toml b/shadowsocks-rust/Cargo.toml index 736feee3dd..7e36de860e 100644 --- a/shadowsocks-rust/Cargo.toml +++ b/shadowsocks-rust/Cargo.toml @@ -260,20 +260,12 @@ reqwest = { version = "0.12", features = [ "blocking", "rustls-tls", "rustls-tls-native-roots", - "deflate", - "gzip", - "brotli", - "zstd", ], default-features = false, optional = true } [target.'cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))'.dependencies] reqwest = { version = "0.12", features = [ "blocking", "native-tls-vendored", - "deflate", - "gzip", - "brotli", - "zstd", ], optional = true } [dev-dependencies] diff --git a/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml b/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml index 50bb51c1c0..7861e835da 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml +++ b/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml @@ -183,7 +183,7 @@ regex = "1.4" mime = { version = "0.3", optional = true } flate2 = { version = "1.0", optional = true } -brotli = { version = "6.0", optional = true } +brotli = { version = "7.0", optional = true } zstd = { version = "0.13", optional = true } tun2 = { version = "3.1", optional = true, default-features = false, features = [ diff --git a/shadowsocks-rust/debian/config.json b/shadowsocks-rust/debian/config.json index 6ab67d57f1..fecbd4b8a2 100644 --- a/shadowsocks-rust/debian/config.json +++ b/shadowsocks-rust/debian/config.json @@ -3,7 +3,7 @@ "server_port": 8388, "local_address": "127.0.0.1", "local_port": 1080, - "password": "barfoo!", + "password": "barfoo", "timeout": 300, "method": "chacha20-ietf-poly1305" } diff --git a/shadowsocks-rust/debian/shadowsocks-rust.postinst b/shadowsocks-rust/debian/shadowsocks-rust.postinst index c39b2af27a..12fc0bbb60 100644 --- a/shadowsocks-rust/debian/shadowsocks-rust.postinst +++ b/shadowsocks-rust/debian/shadowsocks-rust.postinst @@ -21,20 +21,17 @@ pathfind() { case "$1" in configure|reconfigure) pathfind setcap && setcap \ - cap_net_bind_service+ep /usr/bin/ssservice \ + cap_net_bind_service+ep /usr/bin/ssservice \ cap_net_bind_service+ep /usr/bin/sslocal \ cap_net_bind_service+ep /usr/bin/ssserver if [ ! -f /etc/shadowsocks-rust/config.json ]; then set +e - pathfind apg - if [ $? -eq 0 ]; then - passwd=$(apg -n 1 -M ncl) - else - passwd=$(pwgen 12 1) - fi + passwd=$(/usr/bin/ssservice genkey -m "chacha20-ietf-poly1305") + passwd="${passwd//+/\\+}" + passwd="${passwd//\//\\/}" set -e mkdir -p /etc/shadowsocks-rust - sed "s/barfoo!/$passwd/" /usr/share/shadowsocks-rust/config.json \ + sed "s/barfoo/$passwd/" /usr/share/shadowsocks-rust/config.json \ > /etc/shadowsocks-rust/config.json fi ;; diff --git a/small/luci-app-passwall/root/usr/share/passwall/app.sh b/small/luci-app-passwall/root/usr/share/passwall/app.sh index 184eae7522..4a90994b4a 100755 --- a/small/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/small/luci-app-passwall/root/usr/share/passwall/app.sh @@ -890,6 +890,7 @@ run_redir() { esac ;; TCP) + [ "$TCP_UDP" = "1" ] && echolog "UDP节点:与TCP节点相同" tcp_node_socks=1 tcp_node_socks_bind_local=$(config_t_get global tcp_node_socks_bind_local 1) tcp_node_socks_bind="127.0.0.1" @@ -2008,10 +2009,12 @@ TCP_NODE=$(config_t_get global tcp_node nil) UDP_REDIR_PORT=1051 UDP_NODE=$(config_t_get global udp_node nil) TCP_UDP=0 -[ "$UDP_NODE" == "tcp" ] && { +if [ "$UDP_NODE" == "tcp" ]; then UDP_NODE=$TCP_NODE TCP_UDP=1 -} +elif [ "$UDP_NODE" == "$TCP_NODE" ]; then + TCP_UDP=1 +fi [ "$ENABLED" == 1 ] && { [ "$TCP_NODE" != "nil" ] && [ "$(config_get_type $TCP_NODE nil)" != "nil" ] && ENABLED_DEFAULT_ACL=1 [ "$UDP_NODE" != "nil" ] && [ "$(config_get_type $UDP_NODE nil)" != "nil" ] && ENABLED_DEFAULT_ACL=1 diff --git a/small/mihomo/Makefile b/small/mihomo/Makefile index 851ed3e6ca..a12ce0a812 100644 --- a/small/mihomo/Makefile +++ b/small/mihomo/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git -PKG_SOURCE_DATE:=2024-10-01 -PKG_SOURCE_VERSION:=ecd8facd81a1f53f7e3c74cfe6d81dd4655eb4fb -PKG_MIRROR_HASH:=4004758590c77e5d7915e49731db201641c1b579e5e0cb7e2159dede9d08410a +PKG_SOURCE_DATE:=2024-10-03 +PKG_SOURCE_VERSION:=4a16d22398116a88a230071278be536491a8cdce +PKG_MIRROR_HASH:=a58d341ed4f697fdbfe1af544751caabe5c8d132276e4c62b54b74fe8d1f6128 PKG_LICENSE:=MIT PKG_MAINTAINER:=Joseph Mory @@ -16,7 +16,7 @@ PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 PKG_BUILD_FLAGS:=no-mips16 -PKG_BUILD_VERSION:=alpha-ecd8fac +PKG_BUILD_VERSION:=alpha-4a16d22 PKG_BUILD_TIME:=$(shell date -u -Iseconds) GO_PKG:=github.com/metacubex/mihomo diff --git a/v2rayn/v2rayN/ServiceLib/Handler/UpdateHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/UpdateHandler.cs index 263214c29e..3fdb7d7f55 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/UpdateHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/UpdateHandler.cs @@ -109,7 +109,8 @@ namespace ServiceLib.Handler _updateFunc(false, args.Msg); url = args.Url; - fileName = Utils.GetTempPath(Utils.GetGUID()); + var ext = Path.GetExtension(url); + fileName = Utils.GetTempPath(Utils.GetGUID()+ ext); await downloadHandle.DownloadFileAsync(url, fileName, true, _timeout); } else @@ -322,9 +323,9 @@ namespace ServiceLib.Handler } using Process p = new(); - p.StartInfo.FileName = filePath.AppendQuotes(); + p.StartInfo.FileName = filePath; p.StartInfo.Arguments = coreInfo.versionArg; - p.StartInfo.WorkingDirectory = Utils.StartupPath(); + p.StartInfo.WorkingDirectory = Utils.GetConfigPath(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.CreateNoWindow = true; diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs index a93c5491d6..9a0f92e69c 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs @@ -1473,6 +1473,15 @@ namespace ServiceLib.Resx { } } + /// + /// 查找类似 Save Interface Layout 的本地化字符串。 + /// + public static string menuStorageUI { + get { + return ResourceManager.GetString("menuStorageUI", resourceCulture); + } + } + /// /// 查找类似 Add 的本地化字符串。 /// diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx index 2f27bf35fa..8e4c65fb08 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx @@ -1324,4 +1324,7 @@ Active + + Save Interface Layout + \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx index 8e632e2526..f1557ed960 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx @@ -1321,4 +1321,7 @@ 活动 + + 保存界面布局 + \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx index 516a61f199..870dca42c6 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx @@ -1201,4 +1201,7 @@ 活動 + + 儲存介面佈局 + \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs index 45b1218d39..b757f856dc 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs @@ -196,20 +196,20 @@ namespace ServiceLib.ViewModels }); } - private void UpdateFinished() + private async Task UpdateFinished() { if (_lstUpdated.Count > 0 && _lstUpdated.Count(x => x.isFinished == true) == _lstUpdated.Count) { _updateView?.Invoke(EViewAction.DispatcherCheckUpdateFinished, false); - Task.Delay(1000); + await Task.Delay(2000); UpgradeCore(); if (_lstUpdated.Any(x => x.coreType == _v2rayN && x.isFinished == true)) { - Task.Delay(1000); + await Task.Delay(1000); UpgradeN(); } - Task.Delay(1000); + await Task.Delay(1000); _updateView?.Invoke(EViewAction.DispatcherCheckUpdateFinished, true); } } diff --git a/v2rayn/v2rayN/v2rayN.Desktop/App.axaml b/v2rayn/v2rayN/v2rayN.Desktop/App.axaml index 12b0fc39be..81f369d29d 100644 --- a/v2rayn/v2rayN/v2rayN.Desktop/App.axaml +++ b/v2rayn/v2rayN/v2rayN.Desktop/App.axaml @@ -9,6 +9,7 @@ + diff --git a/v2rayn/v2rayN/v2rayN.Desktop/Views/BackupAndRestoreView.axaml b/v2rayn/v2rayN/v2rayN.Desktop/Views/BackupAndRestoreView.axaml new file mode 100644 index 0000000000..0aa5fda9fd --- /dev/null +++ b/v2rayn/v2rayN/v2rayN.Desktop/Views/BackupAndRestoreView.axaml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml b/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml index c1d0770e5f..65f2017a27 100644 --- a/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml +++ b/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml @@ -3,6 +3,7 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:dialogHost="clr-namespace:DialogHostAvalonia;assembly=DialogHost.Avalonia" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:resx="clr-namespace:ServiceLib.Resx;assembly=ServiceLib" xmlns:vms="clr-namespace:ServiceLib.ViewModels;assembly=ServiceLib" @@ -15,270 +16,270 @@ ShowInTaskbar="True" WindowStartupLocation="CenterScreen" mc:Ignorable="d"> + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + - - - - - - - - - - - + + + + + + - - - - - - - + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + \ No newline at end of file diff --git a/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs b/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs index 81125ebea6..74ca873941 100644 --- a/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs +++ b/v2rayn/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs @@ -6,6 +6,7 @@ using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.ReactiveUI; using Avalonia.Threading; +using DialogHostAvalonia; using ReactiveUI; using Splat; using System.ComponentModel; @@ -19,6 +20,8 @@ namespace v2rayN.Desktop.Views { private static Config _config; private WindowNotificationManager? _manager; + private CheckUpdateView? _checkUpdateView; + private BackupAndRestoreView? _backupAndRestoreView; public MainWindow() { @@ -34,6 +37,8 @@ namespace v2rayN.Desktop.Views menuSettingsSetUWP.Click += menuSettingsSetUWP_Click; menuPromotion.Click += menuPromotion_Click; menuClose.Click += menuClose_Click; + menuCheckUpdate.Click += MenuCheckUpdate_Click; + menuBackupAndRestore.Click += MenuBackupAndRestore_Click; var IsAdministrator = true;//WindowsUtils.IsAdministrator(); MessageBus.Current.Listen(Global.CommandSendSnackMsg).Subscribe(x => DelegateSnackMsg(x)); @@ -153,7 +158,6 @@ namespace v2rayN.Desktop.Views tabClashConnections2.Content ??= new ClashConnectionsView(); } conTheme.Content ??= new ThemeSettingView(); - conCheckUpdate.Content ??= new CheckUpdateView(); RestoreUI(); AddHelpMenuItem(); @@ -365,6 +369,18 @@ namespace v2rayN.Desktop.Views //ViewModel?.ScanScreenTaskAsync(result); } + private void MenuCheckUpdate_Click(object? sender, RoutedEventArgs e) + { + _checkUpdateView ??= new CheckUpdateView(); + DialogHost.Show(_checkUpdateView); + } + + private void MenuBackupAndRestore_Click(object? sender, RoutedEventArgs e) + { + _backupAndRestoreView ??= new BackupAndRestoreView(this); + DialogHost.Show(_backupAndRestoreView); + } + #endregion Event #region UI diff --git a/v2rayn/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml b/v2rayn/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml index 93599aa87c..d5c78b8ec5 100644 --- a/v2rayn/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml +++ b/v2rayn/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml @@ -54,21 +54,26 @@ Source="/Assets/add.png" /> - + + + + + + + - -