diff --git a/etc/miss.sh b/etc/miss.sh index 2fad1d7d..532c853f 100644 --- a/etc/miss.sh +++ b/etc/miss.sh @@ -11,20 +11,20 @@ ish_miss_prepare_project ish_miss_prepare_contexts ish_miss_prepare_intshell -ish_miss_prepare_learning ish_miss_prepare_volcanos +ish_miss_prepare_learning ish_miss_prepare_toolkits ish_miss_prepare_icebergs ish_miss_prepare_release -ish_miss_prepare icons +# ish_miss_prepare go-git +# ish_miss_prepare go-qrcode +# ish_miss_prepare websocket +# ish_miss_prepare wubi-dict +# ish_miss_prepare word-dict +# ish_miss_prepare webview ish_miss_prepare matrix -ish_miss_prepare go-git -ish_miss_prepare go-qrcode -ish_miss_prepare websocket -ish_miss_prepare webview -ish_miss_prepare wubi-dict -ish_miss_prepare word-dict +ish_miss_prepare icons ish_miss_make [ -z "$*" ] || ish_miss_serve "$@" diff --git a/src/document/commands/base/web/dream.shy b/src/document/commands/base/web/dream.shy new file mode 100644 index 00000000..27ad0715 --- /dev/null +++ b/src/document/commands/base/web/dream.shy @@ -0,0 +1,13 @@ +title "dream" +spark `dream 命令,工作空间管理。` + +chapter "界面" +spark demo dream + +chapter "参数" + +chapter "操作" + +chapter "监听事件" + +chapter "配置" diff --git a/src/document/commands/index.shy b/src/document/commands/index.shy index ade2604c..1f007fd8 100644 --- a/src/document/commands/index.shy +++ b/src/document/commands/index.shy @@ -1,42 +1,40 @@ navmenu ` 基础模块 base/ + aaa aaa/ + user user.shy + cli cli/ + daemon daemon.shy + system system.shy ctx ctx/ command command.shy config config.shy - cli cli/ - system system.shy - daemon daemon.shy - web web/ - serve serve.shy - space space.shy - aaa aaa/ - user user.shy - - lex lex/ - yac yac/ - ssh ssh/ - gdb gdb/ - + nfs nfs/ + cat cat.shy + dir dir.shy tcp tcp/ host host.shy - nfs nfs/ - dir dir.shy - cat cat.shy - mdb mdb/ - log log/ - -功能模块 core/ + web web/ + space space.shy + dream dream.shy + serve serve.shy + space space.shy +核心模块 core/ + location usr/icebergs/core/chat/location.shy code code/ compile compile.shy publish publish.shy + xterm usr/icebergs/core/code/xterm.shy + plan usr/icebergs/core/team/plan.shy wiki wiki/ word word.shy - chat chat/ - team team/ - mall mall/ - 其它模块 misc/ - tmux tmux/ - session session.shy - buffer buffer.shy -` + chrome.chrome usr/icebergs/misc/chrome/chrome.shy + git.git usr/icebergs/misc/git/git.shy + git.search usr/icebergs/misc/git/search.shy + java.java usr/icebergs/misc/java/java.shy + java.spring usr/icebergs/misc/java/spring.shy + node.node usr/icebergs/misc/node/node.shy + node.npm usr/icebergs/misc/node/npm.shy + node.vue usr/icebergs/misc/node/vue.shy + tmux.tmux usr/icebergs/misc/tmux/tmux.shy +` \ No newline at end of file diff --git a/src/document/download/content.shy b/src/document/download/content.shy index bbd946e1..bdbf7361 100644 --- a/src/document/download/content.shy +++ b/src/document/download/content.shy @@ -1,48 +1,42 @@ title "快速下载" chapter "下载程序" spark `Contexts 使用 Golang 开发,支持交叉编译,所以在各种操作系统上都只需要一个 bin 文件,直接下载执行即可。` -spark `为了方便下载并快速启动,可以使用如下命令。 +spark ` +为了方便下载并快速启动,可以使用如下命令。 自动选择下载命令 curl 或 wget, 自动识别出操作系统与处理器类型,然后下载所需的 bin 文件,并自动启动服务进程。 -点击下面的命令,即可直接复制,然后打开命令行终端,执行一下即可。` +点击下面的命令,即可直接复制,然后打开命令行终端,执行一下即可。 +` web.code.publish binary spark `在 Windows 系统上,可以下载 Git-Bash,在 Git-Bash 的命令行中下载。` chapter "使用方式" -spark `下载成功后,会自动启动服务进程,并会启动一个可交互的 shell。 +spark ` +下载成功后,会自动启动服务进程,并会启动一个可交互的 shell。 既可以在命令行中,通过命令的方式,使用 Contexts 提供的所有软件工具, -也可以在浏览器中,通过网页的方式,使用所有的软件工具。` +也可以在浏览器中,通过网页的方式,使用所有的软件工具。 +` spark `在启动的 shell 中执行命令,输入命令 exit,并输入回车键,即可退出服务进程。` spark `也可以通过信号控制进程,Ctrl+C 重启进程,Ctrl+\\ 退出进程。` spark `再次启动服务进程,输入命令 ./bin/ice.bin 即可。` section "目录结构" -spark ` -下载成功后,Contexts 会以当前目录为工作空间,相关的数据与文件也只会保存在当前目录。所以下载之前,最好先创建一个目录 contexts。 -` +spark `下载成功后,Contexts 会以当前目录为工作空间,相关的数据与文件也只会保存在当前目录。所以下载之前,最好先创建一个目录 contexts。` order ` ./bin/ice.bin 程序文件 ./var/conf/ 配置目录 ./var/data/ 数据目录 ./var/log/ 日志目录 ` -spark ` -其中 ./bin/ice.bin 就是下载的程序文件,直接运行即可使用。其它的文件,都是在程序运行时生成的文件。 -` +spark `其中 ./bin/ice.bin 就是下载的程序文件,直接运行即可使用。其它的文件,都是在程序运行时生成的文件。` section "终端命令" spark ` contexts 可以创建任意多个工作空间,为了保证每个工作空间的完整性与独立性,每个工作空间下都会保存运行所需的所有文件。 所以并不需要将 ice.bin 文件放到全局的 PATH 中,在当前工作空间的目录中,完成所有操作。 ` -spark ` -Contexts 也支持在命令行终端中执行一次性命令。 -` +spark `Contexts 也支持在命令行终端中执行一次性命令。` spark `查看网卡信息` -shell ` -./bin/ice.bin tcp.host -` +shell `./bin/ice.bin tcp.host` spark `执行本机系统命令,pwd 查看当前路径。` -shell ` -./bin/ice.bin cli.system pwd -` +shell `./bin/ice.bin cli.system pwd` diff --git a/src/document/started/feature/repos.shy b/src/document/started/feature/repos.shy new file mode 100644 index 00000000..f9c19fb7 --- /dev/null +++ b/src/document/started/feature/repos.shy @@ -0,0 +1,18 @@ +title "应用市场" +spark `对于操作系统来说,进程与文件就是最基本的元素。` +spark `对于工具系统来说,空间与源码就是最基本的元素。` +spark ` +就像程序文件可以用来启动进程,项目源码可以直接启动 Contexts 的工作空间,工作空间的所有配置与数据也会保存到项目源码中。 +所以代码平台直接可以成为应用市场,项目源码可以一键启动工作空间。 +` +chapter "代码平台" +spark ` +Contexts 提供了完整的前后端框架与工具,可以快速开发出新的项目与模块。 +基于 Contexts 框架开发的项目,都可以直接用来启动 Contexts 的空间。 +这些项目可以存放到任意的平台上,在启动工作空间时,指定代码地址即可。 +` +spark ` +为了方便用户使用,Contexts 提供了代码平台 https://repos.shylinux.com/explore/repos。 +也可以通过命令工具 web.code.git.search 来访问。在项目列表中,点启动按钮,可以直接下载代码并启动工作空间。 +` +spark demo web.code.git.search args repos diff --git a/src/document/started/feature/share.shy b/src/document/started/feature/share.shy new file mode 100644 index 00000000..96bae265 --- /dev/null +++ b/src/document/started/feature/share.shy @@ -0,0 +1,6 @@ +title "共享链接" +spark `在 Contexts 的工具系统中,所有的工作空间与命令工具,都可以一键共享,就可以实现多设备协同,或是多人协同使用。` + +chapter "共享工具" +chapter "共享群组" +chapter "共享空间" \ No newline at end of file diff --git a/src/document/started/feature/space.shy b/src/document/started/feature/space.shy index a0387cc4..e14a2101 100644 --- a/src/document/started/feature/space.shy +++ b/src/document/started/feature/space.shy @@ -1,11 +1,15 @@ title "工作空间" -spark `Contexts 下载并启动后,会以当前运行目录为工作空间,加载启动脚本和保存数据与文件。 +spark ` +Contexts 下载并启动后,会以当前运行目录为工作空间,加载启动脚本和保存数据与文件。 Contexts 不推荐使用全局的资源或家目录的文件,为了减少全局依赖与资源冲突。从而可以在一台机器上启动任意多个空间。 -Contexts 推荐使用空间来管理项目与任务。` -spark `Contexts 每个空间都是一个独立的目录,与独立的守护进程。 -每个空间既可以使用相同的 Contexts,也可以使用不同的 Contexts,即不同的工具集合。因为每个项目内容可能是不一样的,使用的工具也可能是不一样的。` +Contexts 推荐使用空间来管理项目与任务。 +` +spark ` +Contexts 每个空间都是一个独立的目录,与独立的守护进程。 +每个空间既可以使用相同的 Contexts,也可以使用不同的 Contexts,即不同的工具集合。因为每个项目内容可能是不一样的,使用的工具也可能是不一样的。 +` -chapter "创建空间" +chapter "空间管理" section "启动服务" spark `首先,启动 Contexts 服务。并打开后台管理系统。http://localhost:9020/chat/portal/` shell ` @@ -14,13 +18,8 @@ open http://localhost:9020 ` section "打开工具" -spark `如果导航栏未定制,在左边导航栏中打开运维群 -> 应用,然后在右边工作区中,找到 dream,即空间管理的工具。` -spark `http://localhost:9020/chat/portal/?river=operate&storm=web&index=web.dream` -iframe "http://localhost:9020/chat/portal/?river=operate&storm=web&index=web.dream" -spark `或在搜索框中,直接搜索 dream 即可打开空间管理的工具。` -spark `http://localhost:9020?_search=dream` -iframe "http://localhost:9020?_search=dream" -spark `或是直接打开命令网页,http://localhost:9020/chat/cmd/web.dream` +spark `打开管理系统后,点击标题栏中的 "空间",打开空间管理工具,` +spark `或是直接通过地址打开空间管理工具 http://localhost:9020/chat/cmd/dream` spark demo dream section "创建空间" @@ -28,11 +27,13 @@ spark `点击工具栏中的创建按钮,即可打开创建对话框。` spark `空间创建有 name、repos、binary、template 四个参数,其中 name 是必选参数,指定空间名,创建空间时,Contexts 会默认给空间名加一个时间前缀。` order ` repos 指定 git 仓库地址,Contexts 将此仓库下载到本地,然后把此目录当成工作空间。 -binary 指定 bin 文件,Contexts 会自动下载并使用这个 bin 文件,来启动守护进程。 +binary 指定 bin 文件,Contexts 会自动下载并使用这个 bin 文件,来直接启动守护进程。 template 指定模板目录,空间创建时,会从模板目录中复制所需要的文件。 ` -spark `空间创建成功后,会在 ./usr/local/work 目录下创建一个空间的目录。并启动一个守护进程。 -守护进程会自动连接服务进程,从而使用服务进程提供的网页,来访问此空间。` +spark ` +空间创建成功后,会在 ./usr/local/work 目录下创建一个空间的目录。并启动一个守护进程。 +守护进程会自动连接服务进程,从而使用服务进程提供的网页,来访问此空间。 +` section "使用空间" spark `空间创建成功后,会自动打开空间首页。之后也可以在空间工具中,随时打开任意空间的首页。` @@ -45,13 +46,18 @@ spark `Contexts 中的空间,除有独立的目录与进程,用来进行资 spark `虽然工作空间,默认没有分配端口,没有启动任何服务,但是可以通过服务进程作反向代理,将工作空间内的工具、文件、资源对外发布。` section "服务源" -spark `Contexts 的工作空间启动后,可以通过服务进程中的空间管理工具来操作。 -也可以在单独网页中使用。例如 redis-story 项目的首页地址是 http://localhost:9020/chat/pod/20230511-redis-story` +spark ` +Contexts 的工作空间启动后,可以通过服务进程中的空间管理工具来操作。 +也可以在单独网页中使用。例如 redis-story 项目的首页地址是 http://localhost:9020/chat/pod/20230511-redis-story +` iframe "http://localhost:9020/chat/pod/20230511-redis-story" -spark `每个工作空间,都可以灵活的配置自己的首页。Contexts 中的所有工具,都有自己的网页界面,都可以作为空间的首页来使用。 -例如 redis-story 项目,就选择 web.code.macos.desktop 命令作为自己的首页,这样打开 redis-story 空间,就是一个电脑桌面,完全用图标和窗口来使用所有工具。` +spark ` +每个工作空间,都可以灵活的配置自己的首页。Contexts 中的所有工具,都有自己的网页界面,都可以作为空间的首页来使用。 +例如 redis-story 项目,就选择 web.code.macos.desktop 命令作为自己的首页,这样打开 redis-story 空间,就是一个电脑桌面,完全用图标和窗口来使用所有工具。 +` -spark `因为 Contexts 的工作空间,就是一个工作目录加一个守护进程,资源占有非常少,比虚拟机或是容器占有更少的资源。 +spark ` +因为 Contexts 的工作空间,就是一个工作目录加一个守护进程,资源占有非常少,比虚拟机或是容器占有更少的资源。 Contexts 的工作空间,为项目管理与服务部署,提供了一个更加轻量、更加完备的解决方案。 ` spark `每个工作空间下的所有软件工具也可以单独使用。如下地址,pod 和 cmd 分别指定空间名与命令名。` @@ -62,16 +68,22 @@ section "镜像源" spark `Contexts 使用 Golang 开发,所以具备了交叉编译的功能。Contexts 封装了一个编译工具 web.code.compile,可以方便的将本空间的代码编译成指定系统与架构的程序,并将相关资源一起打包。` spark `http://localhost:9020/chat/cmd/compile` spark `编译后的程序文件会放到空间目录的 ./usr/publish/ 目录下,通过服务进程作了一个代理,就可以在其它机器,直接下载这个空间的程序文件,并起动任意多个完全相同的空间。` -spark `这种使用方式,其实就是最快速的 devops, +spark ` +这种使用方式,其实就是最快速的 devops, 原始空间就是开发环境,在其它机器起动的空间就是测试环境或生产环境, -从开发环境到生产环境,之间所有环节完全打通,甚至可以做到,从开发到上线,只需要一秒钟。并且开发环境与生产环境,完全同时在线,可以实现更快速的闭环互动,全面加速整个研发流程。` -spark `如果直接用 wget 或 curl 命令,直接访问工作空间的地址,服务进程检测到请求头 UserAgent 判断出是命令行中的请求。则会直接返回空间的程序文件。 -因为 bin 文件中,打包了完整的资源文件,所以这样就可以在另一台设备上,快速部署出一个完全一样的工作空间。这个命令只是简单的下载程序文件,在实际使用时,会从空间中复制一个功能更完整的下载命令。` +从开发环境到生产环境,之间所有环节完全打通,甚至可以做到,从开发到上线,只需要一秒钟。并且开发环境与生产环境,完全同时在线,可以实现更快速的闭环互动,全面加速整个研发流程。 +` +spark ` +如果直接用 wget 或 curl 命令,直接访问工作空间的地址,服务进程检测到请求头 UserAgent 判断出是命令行中的请求。则会直接返回空间的程序文件。 +因为 bin 文件中,打包了完整的资源文件,所以这样就可以在另一台设备上,快速部署出一个完全一样的工作空间。这个命令只是简单的下载程序文件,在实际使用时,会从空间中复制一个功能更完整的下载命令。 +` shell `wget http://localhost:9020/chat/pod/20230511-redis-story` section "代码源" -spark `每个工作空间,都可以绑定一个代码库,在空间目录下的所有文件,都可以被提交到代码库里,包括代码、配置、数据等。 -不同机器的上工作空间就可以通过代码库,来同步代码与数据,并且记录每次变更的信息。同一台机器上的不同空间,当然也可以共用一个代码库。` +spark ` +每个工作空间,都可以绑定一个代码库,在空间目录下的所有文件,都可以被提交到代码库里,包括代码、配置、数据等。 +不同机器的上工作空间就可以通过代码库,来同步代码与数据,并且记录每次变更的信息。同一台机器上的不同空间,当然也可以共用一个代码库。 +` spark `每个空间的地址,可以直接当成代码地址来使用。服务节点,会自动去查询工作空间的仓库地址,做一个内部重定向。` shell `git clone http://localhost:9020/chat/pod/20230511-redis-story` diff --git a/src/document/started/index.shy b/src/document/started/index.shy index 75125355..a4476d9f 100644 --- a/src/document/started/index.shy +++ b/src/document/started/index.shy @@ -23,7 +23,8 @@ navmenu ` "应用桌面" desktop.shy "高级特性" feature/ - "创建空间" space.shy + "应用市场" repos.shy + "工作空间" space.shy "组建集群" cluster.shy "共享链接" share.shy "认证授权" auth.shy diff --git a/src/document/started/share.shy b/src/document/started/share.shy new file mode 100644 index 00000000..c53329c7 --- /dev/null +++ b/src/document/started/share.shy @@ -0,0 +1 @@ +title "共享链接" \ No newline at end of file diff --git a/src/template/web.chat.header/theme/black.css b/src/template/web.chat.header/theme/black.css index 25b435fc..ccce74c3 100644 --- a/src/template/web.chat.header/theme/black.css +++ b/src/template/web.chat.header/theme/black.css @@ -1,9 +1,8 @@ body.black { --body-fg-color:cyan; + --box-border:darkcyan solid 1px; --legend-bg-color:#061c3c9e; --input-bg-color:transparent; - --box-border: darkcyan solid 1px; - /* --panel-output-bg-color: var(--body-bg-color); */ } body.black fieldset.panel.auto { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); } body.black fieldset.panel.auto>div.output { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); } diff --git a/src/template/web.chat.header/theme/blue.css b/src/template/web.chat.header/theme/blue.css index 7834d2a0..63db0032 100644 --- a/src/template/web.chat.header/theme/blue.css +++ b/src/template/web.chat.header/theme/blue.css @@ -1,5 +1,5 @@ body.blue { + --box-border:#9c9cb070 solid 1px; --legend-bg-color:var(--ui-blue-10); --input-bg-color:var(--ui-geekblue-10); - --box-border:#9c9cb070 solid 1px; } diff --git a/src/template/web.chat.header/theme/dark.css b/src/template/web.chat.header/theme/dark.css index 6adc5ac4..ef5185f0 100644 --- a/src/template/web.chat.header/theme/dark.css +++ b/src/template/web.chat.header/theme/dark.css @@ -1,5 +1,5 @@ body.dark { --legend-bg-color:black; --input-bg-color:#202123; - --panel-output-bg-color: var(--body-bg-color); + --panel-output-bg-color:var(--body-bg-color); } diff --git a/src/template/web.chat.header/theme/light.css b/src/template/web.chat.header/theme/light.css index 6b9ed96c..7b7a2291 100644 --- a/src/template/web.chat.header/theme/light.css +++ b/src/template/web.chat.header/theme/light.css @@ -1,22 +1,21 @@ body.light { - --body-bg-color:#4a566e; - --body-fg-color:black; - --legend-bg-color:aliceblue; - --input-bg-color:white; + --body-bg-color:#4a566e; --body-fg-color:black; --box-border:lightgray solid 1px; --box-shadow:gray 2px 2px 8px; + --hover-fg-color:var(--input-fg-color); + --legend-bg-color:aliceblue; + --input-bg-color:white; --panel-output-bg-color: var(--body-bg-color); --panel-output-fg-color:#d0d3da; --panel-input-bg-color:#6b7488; --panel-input-fg-color:white; --panel-hover-fg-color:white; - --hover-fg-color:var(--input-fg-color); --code-fg-color:white; --code-comment:green; --code-keyword:darkblue; --code-package:blue; --code-datatype:cornflowerblue; --code-function:darkcyan; --code-constant:gray; --code-string:brown; --code-object:purple; } -body.light fieldset.panel:not(.main) input { background-color:var(--panel-input-bg-color); color:var(--panel-input-fg-color); } -body.light fieldset.panel:not(.main) input::placeholder { background-color:var(--panel-input-bg-color); color:var(--panel-fg-color); } -body.light fieldset.panel:not(.main) { --hover-fg-color:white; } +body.light fieldset.panel:not(.main):not(.auto) input { background-color:var(--panel-input-bg-color); color:var(--panel-input-fg-color); } +body.light fieldset.panel:not(.main):not(.auto) input::placeholder { background-color:var(--panel-input-bg-color); color:var(--panel-fg-color); } +body.light fieldset.panel:not(.main):not(.auto) { --hover-fg-color:white; } diff --git a/src/template/web.chat.header/theme/red.css b/src/template/web.chat.header/theme/red.css index 70c41a87..6b5081c0 100644 --- a/src/template/web.chat.header/theme/red.css +++ b/src/template/web.chat.header/theme/red.css @@ -1,7 +1,6 @@ body.red { + --box-border:#9c9cb070 solid 1px; --legend-bg-color:var(--ui-volcano-9); --input-bg-color:var(--ui-red-10); - /* --box-border:red solid 1px; */ - --box-border:#9c9cb070 solid 1px; } diff --git a/src/template/web.chat.header/theme/silver.css b/src/template/web.chat.header/theme/silver.css index a9daf791..2b69d025 100644 --- a/src/template/web.chat.header/theme/silver.css +++ b/src/template/web.chat.header/theme/silver.css @@ -1,5 +1,5 @@ body.silver { + --box-border: gray solid 1px; --legend-bg-color:#2d323e; --input-bg-color:#202430; - --box-border: gray solid 1px; } diff --git a/src/template/web.chat.header/theme/white.css b/src/template/web.chat.header/theme/white.css index 1c1b4024..06afd4d7 100644 --- a/src/template/web.chat.header/theme/white.css +++ b/src/template/web.chat.header/theme/white.css @@ -1,15 +1,14 @@ body.white { --body-fg-color:black; - --legend-bg-color:#ffffffc2; - --input-bg-color:transparent; --box-border:lightgray solid 1px; --box-shadow:gray 2px 2px 8px; + --hover-fg-color:var(--input-fg-color); + --legend-bg-color:#ffffffc2; + --input-bg-color:transparent; --panel-output-fg-color:lavender; - /* --panel-output-bg-color: var(--plugin-bg-color); */ --panel-input-bg-color:var(--input-bg-color); --panel-input-fg-color:lavender; --panel-hover-fg-color:white; - --hover-fg-color:var(--input-fg-color); --code-fg-color:white; --code-comment:green; --code-keyword:darkblue; --code-package:blue; diff --git a/src/template/web.code.publish/binary.sh b/src/template/web.code.publish/binary.sh index af09f135..84153bb5 100644 --- a/src/template/web.code.publish/binary.sh +++ b/src/template/web.code.publish/binary.sh @@ -1,2 +1,2 @@ mkdir contexts; cd contexts -ctx_dev={{.Option "domain"}}{{.Option "ctx_env"}} temp=$(mktemp); if curl -h &>/dev/null; then curl -o $temp -fsSL $ctx_dev; else wget -O $temp -q $ctx_dev; fi; source $temp binary +export ctx_dev={{.Option "domain"}}{{.Option "ctx_env"}} temp=$(mktemp); if curl -h &>/dev/null; then curl -o $temp -fsSL $ctx_dev; else wget -O $temp -q $ctx_dev; fi; source $temp binary