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))) })