diff --git a/base/cli/runtime.go b/base/cli/runtime.go index 3ef780c6..6900add3 100644 --- a/base/cli/runtime.go +++ b/base/cli/runtime.go @@ -182,8 +182,8 @@ const RUNTIME = "runtime" func init() { Index.MergeCommands(ice.Commands{ - RUNTIME: {Name: "runtime info=bootinfo,ifconfig,diskinfo,hostinfo,userinfo,bootinfo,role,api,cli,cmd,mod,env,path,chain auto upgrade reboot lock", Icon: "Infomation.png", Help: "运行环境", Actions: ice.MergeActions(ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { _runtime_init(m); }}, + RUNTIME: {Name: "runtime info=bootinfo,ifconfig,diskinfo,hostinfo,userinfo,bootinfo,role,api,cli,cmd,mod,env,path,chain auto upgrade reboot lock", Icon: "Infomation.png", Help: "环境", Actions: ice.MergeActions(ice.Actions{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { _runtime_init(m) }}, IFCONFIG: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(tcp.HOST) }}, DISKINFO: {Hand: func(m *ice.Message, arg ...string) { _runtime_diskinfo(m) }}, HOSTINFO: {Hand: func(m *ice.Message, arg ...string) { _runtime_hostinfo(m) }}, diff --git a/base/log/debug.go b/base/log/debug.go index b9a29e01..5a424237 100644 --- a/base/log/debug.go +++ b/base/log/debug.go @@ -24,7 +24,7 @@ func init() { LEVEL = "level" ) Index.MergeCommands(ice.Commands{ - DEBUG: {Name: "debug level=error,bench,debug,error,watch offset limit auto reset app doc", Help: "后台日志", Actions: ice.Actions{ + DEBUG: {Name: "debug level=error,bench,debug,error,watch offset limit auto reset app doc", Help: "日志", Actions: ice.Actions{ "doc": {Help: "文档", Hand: func(m *ice.Message, arg ...string) { m.ProcessOpen("https://pkg.go.dev/std") }}, "reset": {Help: "重置", Hand: func(m *ice.Message, arg ...string) { m.Cmd(nfs.CAT, _debug_file(arg[0]), func(line string, index int) { m.ProcessRewrite(mdb.OFFSET, index+2, mdb.LIMIT, 1000) }) diff --git a/base/web/dream.go b/base/web/dream.go index f6dd7780..f45fa255 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -448,7 +448,8 @@ func init() { // kit.If(m.IsDebug(), func() { list = append(list, cli.RUNTIME) }) switch m.Option(mdb.TYPE) { case WORKER: - list = append(list, "settings", nfs.COPY, tcp.SEND) + list = append(list, "settings") + // list = append(list, "settings", nfs.COPY, tcp.SEND) case SERVER: list = append(list, "settoken", DREAM) default: diff --git a/base/web/matrix.js b/base/web/matrix.js index 9ee6e6c0..a108b732 100644 --- a/base/web/matrix.js +++ b/base/web/matrix.js @@ -52,7 +52,9 @@ Volcanos(chat.ONIMPORT, { if (value.module == item.module) { worker = value } }) } - return !worker? html.NOTICE: (worker.status != cli.STOP && item.status != cli.STOP && (item.version != worker.version || item.time < worker.time))? html.DANGER: "" + return !worker? html.NOTICE: (worker.status != cli.STOP && item.status != cli.STOP && (item.version != worker.version || + (item["server.type"] == "origin"? item.time > worker.time: item.time < worker.time) + ))? html.DANGER: "" }, }, [""]) Volcanos(chat.ONACTION, { diff --git a/base/web/share.go b/base/web/share.go index 96b618b9..af3a1f44 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -215,7 +215,7 @@ func ProxyUpload(m *ice.Message, pod string, p string) string { size, cache = s.Size(), s.ModTime() } if m.Cmdv(SPACE, pod, mdb.TYPE) == ORIGIN { - m.Cmd(SPIDE, pod, SPIDE_SAVE, pp, p) + m.Cmd(SPIDE, pod, SPIDE_SAVE, pp, "/p/"+p) } else { kit.If(p == ice.BIN_ICE_BIN, func() { m.Option(ice.MSG_USERROLE, aaa.TECH) }) share := m.Cmdx(SHARE, mdb.CREATE, mdb.TYPE, PROXY, mdb.NAME, p, mdb.TEXT, pod) diff --git a/base/web/store.go b/base/web/store.go index a266fe95..d8e91b9c 100644 --- a/base/web/store.go +++ b/base/web/store.go @@ -88,7 +88,8 @@ func init() { dream := C(DREAM) origin := SpideOrigin(m, arg[0]) kit.If(origin == "", func() { arg[0], origin, dream = ice.DEV, arg[0], arg[0]+dream }) - if kit.IsIn(kit.ParseURL(origin).Hostname(), append(m.Cmds(tcp.HOST).Appendv(aaa.IP), tcp.LOCALHOST)...) { + // if kit.IsIn(kit.ParseURL(origin).Hostname(), append(m.Cmds(tcp.HOST).Appendv(aaa.IP), tcp.LOCALHOST)...) { + if kit.IsIn(kit.ParseURL(origin).Hostname(), tcp.LOCALHOST) { origin = m.Option(ice.MSG_USERHOST) } else { origin = tcp.PublishLocalhost(m, origin) diff --git a/core/chat/macos/desktop.js b/core/chat/macos/desktop.js index dc0e2ecd..6424414f 100644 --- a/core/chat/macos/desktop.js +++ b/core/chat/macos/desktop.js @@ -18,6 +18,7 @@ Volcanos(chat.ONIMPORT, { switch (value) { case "notifications": can.ui.notifications._output.innerHTML && can.onmotion.toggle(can, can.ui.notifications._target); break case "searchs": can.onaction._search(can); break + case "reload": can.Update(); break case cli.QRCODE: can.sup.onaction["生成链接"]({}, can.sup); break case mdb.CREATE: can.onaction.create(event, can); break case html.DESKTOP: @@ -51,7 +52,7 @@ Volcanos(chat.ONIMPORT, { } } }) }, _dock: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.dock", style: html.OUTPUT}, function(sub) { can.ui.dock = sub - sub.onexport.output = function(sub, msg) { can.onimport.layout(can) } + sub.onexport.output = function(sub, msg) { can.onmotion.delay(can, function() { can.onimport.layout(can) }) } sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) } }) }, _desktop: function(can, msg, name) { var target = can.page.Append(can, can._output, [html.DESKTOP])._target; can.ui.desktop = target @@ -119,7 +120,8 @@ Volcanos(chat.ONIMPORT, { }, function() { next() }) }, function() { _select && _select.click() }) }, - layout: function(can) { can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth()) + layout: function(can) { + can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth()) can.ui.dock && can.page.style(can, can.ui.dock._output, "position", "") can.ui.dock && can.page.style(can, can.ui.dock._target, html.LEFT, can.base.Min((can.ConfWidth()-(can.ui.dock._target.offsetWidth||502))/2, 0)) can.ui.menu && can.ui.menu.onimport.size(can.ui.menu, html.DESKTOP_MENU_HEIHGT, can.ConfWidth(), false) diff --git a/core/chat/macos/menu.js b/core/chat/macos/menu.js index c9d1baea..5615adfc 100644 --- a/core/chat/macos/menu.js +++ b/core/chat/macos/menu.js @@ -9,7 +9,10 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.page.style(can, can._ou {img: can.misc.ResourceFavicon(can, msg.Option(html.FAVICON), can.ConfSpace())}, {text: decodeURIComponent(can.ConfSpace()||can.misc.Search(can, ice.POD)||location.host)}, ], onclick: function(event) { can.sup.onexport.record(can, html.DESKTOP) }}, - {view: [[html.MENU, mdb.ICON, web.REFRESH], "", can.page.unicode.refresh], onclick: function(event) { can.user.reload(true) }}, + {view: [[html.MENU, mdb.ICON, web.REFRESH], "", can.page.unicode.refresh], onclick: function(event) { + can.sup.onexport.record(can, "reload") + // can.user.reload(true) + }}, {view: [[html.MENU, mdb.ICON, mdb.CREATE], "", can.page.unicode.create], onclick: function(event) { can.sup.onexport.record(can, mdb.CREATE) }}, ])) }}) diff --git a/core/wiki/portal.css b/core/wiki/portal.css index 3b60f895..63fa0c43 100644 --- a/core/wiki/portal.css +++ b/core/wiki/portal.css @@ -33,14 +33,15 @@ fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column b { fon fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column input[type=button] { box-shadow:var(--th-box-shadow); border:0; background-color:var(--notice-bg-color); color:var(--notice-fg-color); } fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column input[type=button]:hover { box-shadow:var(--notice-box-shadow); } fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.desktop>legend { display:none; } -fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output div.content { background-color:var(--code-bg-color); color:var(--code-fg-color); padding:var(--input-padding) 0; - --code-keyword:orange; --code-comment:silver; - --code-function:cyan; --code-constant:silver; --code-string:silver; - --code-package:silver; --code-datatype:silver; --code-object:silver; +fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output div.content { + padding:var(--input-padding) 0; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { box-shadow:var(--th-box-shadow); border:0; border-left:var(--box-notice3); } +fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { +box-shadow:var(--th-box-shadow); border:var(--box-border); border-left:var(--box-notice3); } fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell]:hover { box-shadow:var(--notice-box-shadow); } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { background-color:var(--code-bg-color); color:var(--code-fg-color); padding:var(--button-padding); margin-top:var(--button-margin); } +fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { + padding:var(--button-padding); margin-top:var(--button-margin); +} fieldset.web.wiki.portal>div.output>div.layout>div.main table.content div.story[data-type=spark][data-name=shell] { margin-top:unset; } fieldset.web.wiki.portal.home>div.output>div.layout>div.main p { white-space:pre-wrap; text-align:center; } fieldset.web.wiki.portal.home>div.output>div.layout>div.main p:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } @@ -49,7 +50,7 @@ body.dark fieldset.web.wiki.portal>div.output>div.header div.story[data-name=nav body.dark fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item.select { background-color:var(--plugin-bg-color); } body.dark fieldset.web.wiki.portal>div.output>div.layout { background-color:var(--plugin-bg-color); --code-bg-color:var(--output-bg-color); } body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset:not(.macos) { border:var(--plugin-border); } -body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.output>div.output { border-radius:var(--plugin-radius); } +body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset { border-radius:0; } body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { border-left:var(--box-notice3); } // body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { border:var(--box-border); } body.white fieldset.web.wiki.portal>div.output>div.header { color:silver; } diff --git a/core/wiki/portal.js b/core/wiki/portal.js index 04955741..decfad3f 100644 --- a/core/wiki/portal.js +++ b/core/wiki/portal.js @@ -12,11 +12,6 @@ Volcanos(chat.ONIMPORT, { } can.ui = can.onappend.layout(can, [html.HEADER, [html.NAV, html.MAIN, html.ASIDE]], html.FLOW), can.onimport._scroll(can) can.ui.header.innerHTML = msg.Append(html.HEADER), can.ui.nav.innerHTML = msg.Append(html.NAV) - can.onmotion.delay(can, function() { - can.page.Select(can, can.ui.header, "div.item:first-child>span", function(target, index) { - index == 0 && can.page.insertBefore(can, [{img: can.misc.ResourceFavicon(can, can.user.info.favicon), style: {height: 42}}], target) - }) - }, 300) if (msg.Append(html.NAV) == "") { can.onmotion.hidden(can, can.ui.nav), can.onmotion.hidden(can, can.ui.aside) } else { @@ -46,6 +41,9 @@ Volcanos(chat.ONIMPORT, { }: function(target, item) { can.db.nav[can.base.trimPrefix(item.meta.link, nfs.USR_LEARNING_PORTAL, nfs.SRC_DOCUMENT)] = target location.hash || item.list && item.list.length > 0 || link || (link = can.onaction.route({}, can, item.meta.link, true)) }, target) + can.page.Select(can, can.ui.header, "div.item:first-child>span", function(target, index) { + can.page.insertBefore(can, [{img: can.misc.ResourceFavicon(can, can.user.info.favicon), style: {height: 42}}], target) + }) }, content: function(can, file) { can.runActionCommand(event, web.WIKI_WORD, [(can.base.beginWith(file, nfs.USR, nfs.SRC)? "": nfs.USR_LEARNING_PORTAL+can.db.current)+file], function(msg) { can.ui.main.innerHTML = msg.Result(), can.onmotion.clear(can, can.ui.aside) diff --git a/core/wiki/word.go b/core/wiki/word.go index ee82f374..9f895df1 100644 --- a/core/wiki/word.go +++ b/core/wiki/word.go @@ -42,6 +42,11 @@ func init() { WordAlias(m, LABEL, CHART, LABEL) WordAlias(m, CHAIN, CHART, CHAIN) WordAlias(m, SEQUENCE, CHART, SEQUENCE) + if ls := kit.SplitLine(m.Cmdx(nfs.CAT, ice.SRC_MAIN_SHY)); len(ls) > 0 { + if list := kit.SplitWord(ls[0]); len(list) > 0 && list[0] == TITLE { + ice.Info.Titles = list[1] + } + } }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if mdb.IsSearchPreview(m, arg) { diff --git a/info.go b/info.go index 79f66fe7..6884cbf1 100644 --- a/info.go +++ b/info.go @@ -51,6 +51,9 @@ func (s info) Title() string { return p return kit.Capital(p) } +func (s info) IconTitle() string { + return kit.Format("%s", Pulse.Resource(s.NodeIcon), s.Title()) +} type info struct { Make MakeInfo diff --git a/init.go b/init.go index 1ba438d6..bf1a76b5 100644 --- a/init.go +++ b/init.go @@ -65,6 +65,11 @@ var Index = &Context{Name: ICE, Help: "冰山模块", Commands: Commands{ m.Cmd(SOURCE, ETC_INIT_SHY) loadImportant(m) m.Cmd(CTX_OPEN) + m.Travel(func(p *Context, c *Context, key string, cmd *Command) { + if h, ok := cmd.Actions["afterInit"]; ok { + h.Hand(m.Spawn(c, key, cmd), arg...) + } + }) }}, QUIT: {Hand: func(m *Message, arg ...string) { m.GoSleep300ms(func() { os.Exit(kit.Int(kit.Select("0", arg, 0))) })