Update apps categories

This commit is contained in:
mrsang 2021-03-31 23:09:40 +02:00
parent 3ff8f1a6eb
commit ada4358d61
92 changed files with 912 additions and 124 deletions

View File

@ -5,6 +5,9 @@ It is used to show the change logs of the current AntOS version
## Change logs
### v0.0.7-a
* Change app category to Utility
### v0.0.6-a
* Use README page available on github

View File

@ -5,6 +5,9 @@ It is used to show the change logs of the current AntOS version
## Change logs
### v0.0.7-a
* Change app category to Utility
### v0.0.6-a
* Use README page available on github

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.0.6-a",
"category":"Other",
"version":"0.0.7-a",
"category":"Utility",
"iconclass":"fa fa-question-circle",
"mimes":["none"],
"locales": {

Binary file not shown.

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.0.6-a",
"category":"Other",
"version":"0.0.7-a",
"category":"Utility",
"iconclass":"fa fa-question-circle",
"mimes":["none"],
"locales": {

View File

@ -9,6 +9,9 @@ Small application for zip file manager
## Changle log
### v0.0.2-a
* Change category to utility
### v0.0.2-a
* Adapt to the new AntOS string API

View File

@ -9,6 +9,9 @@ Small application for zip file manager
## Changle log
### v0.0.2-a
* Change category to utility
### v0.0.2-a
* Adapt to the new AntOS string API

View File

@ -7,8 +7,8 @@
"author": "Xuan Sang LE",
"email": "mrsang@lxsang.me"
},
"version":"0.0.2-a",
"category":"Other",
"version":"0.0.3-a",
"category":"Utility",
"iconclass":"fa fa-archive",
"mimes":["application/zip"],
"locale": {}

Binary file not shown.

View File

@ -7,8 +7,8 @@
"author": "Xuan Sang LE",
"email": "mrsang@lxsang.me"
},
"version":"0.0.2-a",
"category":"Other",
"version":"0.0.3-a",
"category":"Utility",
"iconclass":"fa fa-archive",
"mimes":["application/zip"],
"locale": {}

View File

@ -3,6 +3,8 @@ A back-end tool for my online document hub [https://doc.iohub.dev/antos/](https:
## Change logs
### v0.2.3-a
* Chage app category name
### v0.2.1-a
* Chage libraries load order
### v0.2.1-a

View File

@ -1,8 +1,10 @@
# Booklet
A back-end tool for my online document hub [https://doc.iohub.dev/antos/](https://doc.iohub.dev/antos/)
A back-end tool for my online document hub [https://doc.iohub.dev/antos/](https://doc.iohub.dev/)
## Change logs
### v0.2.3-a
* Chage app category name
### v0.2.1-a
* Chage libraries load order
### v0.2.1-a

View File

@ -6,9 +6,9 @@
"author": "Xuan Sang LE",
"email": "mrsang@lxsang.me"
},
"version":"0.2.2-a",
"category":"Other",
"iconclass":"fa fa-adn",
"version":"0.2.3-a",
"category":"Office",
"iconclass":"bi bi-journals",
"dependencies": ["SimpleMDE@1.11.2-r","Katex@0.11.1-r"],
"mimes":["dir"]
}

Binary file not shown.

View File

@ -6,9 +6,9 @@
"author": "Xuan Sang LE",
"email": "mrsang@lxsang.me"
},
"version":"0.2.2-a",
"category":"Other",
"iconclass":"fa fa-adn",
"version":"0.2.3-a",
"category":"Office",
"iconclass":"bi bi-journals",
"dependencies": ["SimpleMDE@1.11.2-r","Katex@0.11.1-r"],
"mimes":["dir"]
}

View File

@ -6,6 +6,7 @@ Clipper use `html2canvas` to capture AntOS desktop or a specific window.
It is able to crop the captured image before saving to a file
## Change logs
* v0.1.3-a change app category
* v0.1.2-a use ALT-S as global shortcut for screen capture
* v0.1.1-a use CTRL-S as global shortcut for screen capture
* v0.1.0-a initial version

View File

@ -6,6 +6,7 @@ Clipper use `html2canvas` to capture AntOS desktop or a specific window.
It is able to crop the captured image before saving to a file
## Change logs
* v0.1.3-a change app category
* v0.1.2-a use ALT-S as global shortcut for screen capture
* v0.1.1-a use CTRL-S as global shortcut for screen capture
* v0.1.0-a initial version

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.2-a",
"category":"Other",
"version":"0.1.3-a",
"category":"Utility",
"iconclass":"fa fa-scissors",
"mimes":["none"],
"locale": {}

Binary file not shown.

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.2-a",
"category":"Other",
"version":"0.1.3-a",
"category":"Utility",
"iconclass":"fa fa-scissors",
"mimes":["none"],
"locale": {}

View File

@ -7,9 +7,9 @@
"author": "",
"edsdmail": ""
},
"version":"0.1.2-a",
"category":"Other",
"iconclass":"fa fa-adn",
"version":"0.1.3-a",
"category":"Development",
"iconclass":"bi bi-file-diff-fill",
"mimes":["none"],
"dependencies":["AceDiff@3.0.3-r"],
"locale": {}

View File

@ -7,9 +7,9 @@
"author": "",
"edsdmail": ""
},
"version":"0.1.2-a",
"category":"Other",
"iconclass":"fa fa-adn",
"version":"0.1.3-a",
"category":"Development",
"iconclass":"bi bi-file-diff-fill",
"mimes":["none"],
"dependencies":["AceDiff@3.0.3-r"],
"locale": {}

View File

@ -2,6 +2,7 @@
Simple PDF document manager
## Change logs
- v0.0.7-a: Change category and icon
- v0.0.6-a: Add print dialog (support server side printing)
- v0.0.5-a: Fix delete file bug
- v0.0.4-a: Display file size in entry meta-data

View File

@ -2,6 +2,7 @@
Simple PDF document manager
## Change logs
- v0.0.7-a: Change category and icon
- v0.0.6-a: Add print dialog (support server side printing)
- v0.0.5-a: Fix delete file bug
- v0.0.4-a: Display file size in entry meta-data

File diff suppressed because one or more lines are too long

View File

@ -7,9 +7,9 @@
"author": "",
"email": ""
},
"version":"0.0.6-a",
"category":"Other",
"iconclass":"fa fa-adn",
"version":"0.0.7-a",
"category":"Office",
"iconclass":"bi bi-collection-fill",
"mimes":["none"],
"locale": {}
}

Binary file not shown.

View File

@ -7,9 +7,9 @@
"author": "",
"email": ""
},
"version":"0.0.6-a",
"category":"Other",
"iconclass":"fa fa-adn",
"version":"0.0.7-a",
"category":"Office",
"iconclass":"bi bi-collection-fill",
"mimes":["none"],
"locale": {}
}

15
Dockman/README.md Normal file
View File

@ -0,0 +1,15 @@
# Dockman
This is an example project, generated by AntOS Development Kit
## Howto
Use the CodePad command palette to access to the SDK functionalities:
1. Create new project
2. Init the project from the current folder located in side bar
3. Build and run the project
4. Release the project in zip package
## Set up build target
Open the `project.json` file from the current project tree and add/remove
build target entries. Save the file

141
Dockman/api.lua Normal file
View File

@ -0,0 +1,141 @@
local args=...
local handle = {}
local result = function(data)
return { error = false, result = data }
end
local error = function(msg)
return {error = msg, result = false}
end
local exec = function(host, rcmd, decode)
local user = SESSION.user
if not user then return nil end
local cmd = "ssh -tt "..user.."@"..host.." "..rcmd
if decode then
cmd = cmd.." --format \\'{{json .}}\\'"
end
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if decode then
s = s:gsub('[\n\r]+', ',')
return JSON.decodeString("["..s.."null]")
else
return s
end
end
handle.list_image = function(data)
local res = exec(data.host, "docker image ls", true)
if not res then
return error("Unable to fetch image list")
end
-- inspect images
for i,v in ipairs(res) do
v.Detail = exec(data.host, "docker image inspect "..v.ID, true)[1]
v.text = v.Detail.RepoTags[1]
if not v.text or v.text == "" then
v.text = v.ID
end
end
return result(res)
end
handle.list_container = function(data)
local res = exec(data.host, "docker ps -a -f ancestor="..data.image, true)
if not res then
return error("Unable to fetch container list")
end
for i,v in ipairs(res) do
v.Detail = exec(data.host, "docker container inspect "..v.ID, true)[1]
v.text = v.Names
if v.Detail.State.Running then
v.iconclass = "fa fa-circle running"
else
v.iconclass = "fa fa-circle stop"
end
end
return result(res)
end
handle.run_container = function(data)
local res = exec(data.host, "docker start "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
return result("OK")
else
return error(res)
end
end
handle.pull_image = function(data)
local res = exec(data.host, "docker pull "..data.image, false)
return result(std.b64encode(res))
end
handle.rm_image = function(data)
local res = exec(data.host, "docker rmi "..data.id.."; sleep 2", false)
return result(res)
end
handle.create_container = function(data)
local cmd = "docker run "
for k,v in pairs(data.parameters) do
k = k:gsub(" ", "")
if k:len() == 1 then
cmd = cmd.." -"..k.." \""..v.."\" "
else
if k:match("^e_.*") then
cmd = cmd.." -e \""..k:gsub("e_","").."="..v.."\" "
else
cmd = cmd.." --"..k
if v ~= "" then
cmd = cmd.."=\""..v.."\" "
end
end
end
end
cmd = cmd.."--detach=true "..data.image
local res = exec(data.host, cmd, false)
return result(res)
end
handle.stop_container = function(data)
local res = exec(data.host, "docker stop "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
return result("OK")
else
return error(res)
end
end
handle.rm_container = function(data)
local res = exec(data.host, "docker stop "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
local res = exec(data.host, "docker rm "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
return result("OK")
else
error(res)
end
else
return error(res)
end
end
if args.action and handle[args.action] then
return handle[args.action](args.args)
else
return error("Invalid action parameter")
end

View File

@ -0,0 +1,15 @@
# Dockman
This is an example project, generated by AntOS Development Kit
## Howto
Use the CodePad command palette to access to the SDK functionalities:
1. Create new project
2. Init the project from the current folder located in side bar
3. Build and run the project
4. Release the project in zip package
## Set up build target
Open the `project.json` file from the current project tree and add/remove
build target entries. Save the file

141
Dockman/build/debug/api.lua Normal file
View File

@ -0,0 +1,141 @@
local args=...
local handle = {}
local result = function(data)
return { error = false, result = data }
end
local error = function(msg)
return {error = msg, result = false}
end
local exec = function(host, rcmd, decode)
local user = SESSION.user
if not user then return nil end
local cmd = "ssh -tt "..user.."@"..host.." "..rcmd
if decode then
cmd = cmd.." --format \\'{{json .}}\\'"
end
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if decode then
s = s:gsub('[\n\r]+', ',')
return JSON.decodeString("["..s.."null]")
else
return s
end
end
handle.list_image = function(data)
local res = exec(data.host, "docker image ls", true)
if not res then
return error("Unable to fetch image list")
end
-- inspect images
for i,v in ipairs(res) do
v.Detail = exec(data.host, "docker image inspect "..v.ID, true)[1]
v.text = v.Detail.RepoTags[1]
if not v.text or v.text == "" then
v.text = v.ID
end
end
return result(res)
end
handle.list_container = function(data)
local res = exec(data.host, "docker ps -a -f ancestor="..data.image, true)
if not res then
return error("Unable to fetch container list")
end
for i,v in ipairs(res) do
v.Detail = exec(data.host, "docker container inspect "..v.ID, true)[1]
v.text = v.Names
if v.Detail.State.Running then
v.iconclass = "fa fa-circle running"
else
v.iconclass = "fa fa-circle stop"
end
end
return result(res)
end
handle.run_container = function(data)
local res = exec(data.host, "docker start "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
return result("OK")
else
return error(res)
end
end
handle.pull_image = function(data)
local res = exec(data.host, "docker pull "..data.image, false)
return result(std.b64encode(res))
end
handle.rm_image = function(data)
local res = exec(data.host, "docker rmi "..data.id.."; sleep 2", false)
return result(res)
end
handle.create_container = function(data)
local cmd = "docker run "
for k,v in pairs(data.parameters) do
k = k:gsub(" ", "")
if k:len() == 1 then
cmd = cmd.." -"..k.." \""..v.."\" "
else
if k:match("^e_.*") then
cmd = cmd.." -e \""..k:gsub("e_","").."="..v.."\" "
else
cmd = cmd.." --"..k
if v ~= "" then
cmd = cmd.."=\""..v.."\" "
end
end
end
end
cmd = cmd.."--detach=true "..data.image
local res = exec(data.host, cmd, false)
return result(res)
end
handle.stop_container = function(data)
local res = exec(data.host, "docker stop "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
return result("OK")
else
return error(res)
end
end
handle.rm_container = function(data)
local res = exec(data.host, "docker stop "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
local res = exec(data.host, "docker rm "..data.id, false)
res = res:gsub('[\n\r]+', '')
if res == data.id then
return result("OK")
else
error(res)
end
else
return error(res)
end
end
if args.action and handle[args.action] then
return handle[args.action](args.args)
else
return error("Invalid action parameter")
end

View File

@ -0,0 +1,34 @@
afx-app-window[data-id="Dockman"] .tab-wrapper button {
width: 100%;
height: 100%;
}
afx-app-window[data-id="Dockman"] .header .label-text {
font-weight: bold;
}
afx-app-window[data-id="Dockman"] afx-label.header
{
border-bottom: 1px solid #116cd6;
}
afx-app-window[data-id="Dockman"] .tab-wrapper {
border-bottom: 1px solid #116cd6;
}
afx-app-window[data-id="Dockman"] .tab-wrapper afx-list-view> .list-container {
overflow: hidden;
}
afx-app-window[data-id="Dockman"] afx-tree-view .afx_folder_item .itemname .label-text {
font-weight: bold;
}
afx-app-window[data-id="Dockman"] .running:before{
color: green;
}
afx-app-window[data-id="Dockman"] .stop:before{
color: red;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
{
"pkgname": "Dockman",
"app":"Dockman",
"name":"Remote Docker Manager",
"description":"Remote Docker Manager",
"info":{
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.0-b",
"category":"Development",
"iconclass":"fa fa-cubes",
"mimes":["none"],
"dependencies":[],
"locale": {}
}

View File

@ -0,0 +1,25 @@
<afx-app-window data-id="Dockman" apptitle="__(Remote Docker Manager)" width="650" height="450" >
<afx-vbox>
<afx-hbox data-height="23" class="tab-wrapper">
<afx-button data-id="add" text="" iconclass="fa fa-plus-square" data-width="23"></afx-button>
<afx-tab-bar data-id="host-tab-bar" closable="true"></afx-tab-bar>
</afx-hbox>
<afx-hbox>
<afx-vbox data-width="250">
<afx-label text = "__(Images)" class="header" iconclass='fa fa-square' data-height="23"></afx-label>
<afx-list-view data-id="img-list"></afx-list-view>
<afx-resizer data-height = "3"></afx-resizer>
<afx-label text = "__(Containers)" class="header" iconclass='fa fa-square' data-height="23"></afx-label>
<afx-list-view data-id="container-list"></afx-list-view>
</afx-vbox>
<afx-resizer data-width="3"></afx-resizer>
<afx-vbox>
<!--afx-label text = "__(Detail)" class="header" iconclass='fa fa-square' data-height="23"></afx-label-->
<afx-tree-view data-id="obj-view"></afx-tree-view>
<div data-height="25"></div>
</afx-vbox>
</afx-hbox>
</afx-vbox>
</afx-app-window>

Binary file not shown.

283
Dockman/main.coffee Normal file
View File

@ -0,0 +1,283 @@
class Dockman extends this.OS.application.BaseApplication
constructor: ( args ) ->
super "Dockman", args
main: () ->
@setting.hosts = [] unless @setting.hosts
@treeview = @find "obj-view"
@currenthost = undefined
@tabbar = @find "host-tab-bar"
@tabbar.ontabselect = (e) =>
@currenthost = e.data.item.data
@loadHost()
@tabbar.ontabclose = (e) =>
id = @setting.hosts.indexOf e.data.item.data
return false unless id >= 0
selid = @tabbar.selected
if selid is id
nid = id + 1
nid = id - 1 if id >= @setting.hosts.length - 1
@tabbar.selected = nid
@setting.hosts.splice id, 1
return true
@find("add").onbtclick = (e) =>
@openDialog("MultiInputDialog", {
title: "__(Add new Docker host)",
model: {
text: "__(Name)",
url: "__(Host url)"
},
allow_empty: false
})
.then (d) =>
@addTab d, true
@imglist = @find "img-list"
@imglist.onlistselect = (e) =>
@loadContainer e.data.item.data.text, false
tdata = { text: e.data.item.data.text, nodes: @getTreeData e.data.item.data }
@treeview.data = tdata
@treeview.expandAll()
@ctnlist = @find "container-list"
@ctnlist.onlistselect = (e) =>
tdata = { text: e.data.item.data.text, nodes: @getTreeData e.data.item.data }
@treeview.data = tdata
@treeview.expandAll()
@imglist.selected = -1
@imglist.buttons = [
{
text: "",
iconclass: "fa fa-arrow-down",
onbtclick: () =>
sel = @imglist.selectedItem
image = ""
image = sel.data.text if sel
@openDialog "PromptDialog", {
title: __("Pull image"),
label: __("Pull image:"),
value: image
}
.then (img) =>
return if img is ""
@exec("pull_image", {
host: @currenthost.url,
image: img
})
.then (r) =>
return @error r.error if r.error
@openDialog "TextDialog", {
title:__("Command output"),
disable: true,
value: atob(r.result)
}
.then (_d_) =>
@loadHost()
},
{
text: "",
iconclass: "fa fa-refresh",
onbtclick: () =>
@loadHost()
},
{
text: "",
iconclass: "fa fa-minus",
onbtclick: () =>
sel = @imglist.selectedItem
return unless sel
@ask({ title: __("Comfirm delete"), text: __("Are you sure?")})
.then (r) =>
return unless r
@exec("rm_image", {
host: @currenthost.url,
id: sel.data.ID
})
.then (r) =>
return @error r.error if r.error
@openDialog "TextDialog", {
title:__("Command output"),
disable: true,
value: r.result
}
.then (_d_) =>
@loadHost()
}
]
@ctnlist.buttons = [
{
text: "",
iconclass: "fa fa-play",
onbtclick: () =>
sel = @ctnlist.selectedItem
return unless sel and sel.data
data = sel.data
return if data.Detail.State.Running
@exec("run_container", {
host: @currenthost.url,
id: data.ID
})
.then (r) =>
return @error r.error if r.error
@notify __("Container {0} started", data.ID)
@loadContainer(data.Image, true)
},
{
text: "",
iconclass: "fa fa-stop",
onbtclick: () =>
sel = @ctnlist.selectedItem
return unless sel and sel.data
data = sel.data
return unless data.Detail.State.Running
@exec("stop_container", {
host: @currenthost.url,
id: data.ID
})
.then (r) =>
return @error r.error if r.error
@notify __("Container {0} stopped", data.ID)
@loadContainer(data.Image, true)
},
{
text: "",
iconclass: "fa fa-refresh",
onbtclick: () =>
data = @ctnlist.data[0]
if not data
sel = @imglist.selectedItem
return unless sel
image = sel.data.text
else
image = data.Image
@loadContainer(image, true)
},
{
text: "",
iconclass: "fa fa-plus",
onbtclick: () =>
if not @ctnlist.data[0]
return unless @imglist.selectedItem
image = @imglist.selectedItem.data.text
else
image = @ctnlist.data[0].Image
console.log image
@openDialog "KeyValueDialog", {
title: __("Container parameters"),
data: {
p: "8080:80",
restart: "always",
name: "Container_Name",
memory: "200m",
cpus: "1",
hostname: "Container_HostNamed"
}
}
.then (d) =>
@exec("create_container", {
host: @currenthost.url,
image: image,
parameters: d
})
.then (r) =>
return @error r.error if r.error
@openDialog "TextDialog", {
title:__("Command output"),
disable: true,
value: r.result
}
.then (_d_) =>
@loadContainer(image,true)
},
{
text: "",
iconclass: "fa fa-minus",
onbtclick: () =>
sel = @ctnlist.selectedItem
return unless sel and sel.data
data = sel.data
@ask({ title: __("Comfirm delete"), text: __("Are you sure?")})
.then (r) =>
return unless r
@exec("rm_container", {
host: @currenthost.url,
id: data.ID
})
.then (r) =>
return @error r.error if r.error
@notify __("Container {0} removed", data.ID)
@loadContainer(data.Image, true)
}
]
@tabbar.push v for v in @setting.hosts
@tabbar.selected = @setting.hosts.length - 1
addTab: (data, refresh) ->
id = @setting.hosts.length
@setting.hosts.push data
@tabbar.push data
return unless refresh
@tabbar.selected = id
exec: (action, args) ->
cmd =
path: "#{@path()}/api.lua",
parameters:
action: action,
args: args
return @call(cmd)
loadHost: () ->
return unless @currenthost
@resetView()
@exec("list_image", {
host: @currenthost.url
})
.then (d) =>
return @notify d.error if d.error
@imglist.data = d.result
.catch (e) =>
@error e.toString(), e
loadContainer: (data, cleanup) ->
@exec("list_container", {
host:@currenthost.url,
image: data
})
.then (d) =>
return @notify d.error if d.error
if cleanup
@treeview.data = {}
@ctnlist.data = []
@ctnlist.data = d.result
.catch (e) =>
@error e.toString(), e
getTreeData: (data) ->
type = typeof data
nodes = []
switch type
when "object"
for key, value of data
if key isnt "selected" and key isnt "domel"
if typeof value isnt "object"
nodes.push { text: "#{key}: #{value}" }
else
nodes.push { text: key, nodes: @getTreeData(value) }
return nodes
else
return []
resetView: () ->
@imglist.data = []
@ctnlist.data = []
@treeview.data = {}
this.OS.register "Dockman", Dockman

33
Dockman/main.css Normal file
View File

@ -0,0 +1,33 @@
afx-app-window[data-id="Dockman"] .tab-wrapper button {
width: 100%;
height: 100%;
}
afx-app-window[data-id="Dockman"] .header .label-text {
font-weight: bold;
}
afx-app-window[data-id="Dockman"] afx-label.header
{
border-bottom: 1px solid #116cd6;
}
afx-app-window[data-id="Dockman"] .tab-wrapper {
border-bottom: 1px solid #116cd6;
}
afx-app-window[data-id="Dockman"] .tab-wrapper afx-list-view> .list-container {
overflow: hidden;
}
afx-app-window[data-id="Dockman"] afx-tree-view .afx_folder_item .itemname .label-text {
font-weight: bold;
}
afx-app-window[data-id="Dockman"] .running:before{
color: green;
}
afx-app-window[data-id="Dockman"] .stop:before{
color: red;
}

16
Dockman/package.json Normal file
View File

@ -0,0 +1,16 @@
{
"pkgname": "Dockman",
"app":"Dockman",
"name":"Remote Docker Manager",
"description":"Remote Docker Manager",
"info":{
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.0-b",
"category":"Development",
"iconclass":"fa fa-cubes",
"mimes":["none"],
"dependencies":[],
"locale": {}
}

7
Dockman/project.json Normal file
View File

@ -0,0 +1,7 @@
{
"name": "Dockman",
"css": ["main.css"],
"javascripts": [],
"coffees": ["main.coffee"],
"copies": ["scheme.html", "api.lua", "package.json", "README.md"]
}

25
Dockman/scheme.html Normal file
View File

@ -0,0 +1,25 @@
<afx-app-window data-id="Dockman" apptitle="__(Remote Docker Manager)" width="650" height="450" >
<afx-vbox>
<afx-hbox data-height="23" class="tab-wrapper">
<afx-button data-id="add" text="" iconclass="fa fa-plus-square" data-width="23"></afx-button>
<afx-tab-bar data-id="host-tab-bar" closable="true"></afx-tab-bar>
</afx-hbox>
<afx-hbox>
<afx-vbox data-width="250">
<afx-label text = "__(Images)" class="header" iconclass='fa fa-square' data-height="23"></afx-label>
<afx-list-view data-id="img-list"></afx-list-view>
<afx-resizer data-height = "3"></afx-resizer>
<afx-label text = "__(Containers)" class="header" iconclass='fa fa-square' data-height="23"></afx-label>
<afx-list-view data-id="container-list"></afx-list-view>
</afx-vbox>
<afx-resizer data-width="3"></afx-resizer>
<afx-vbox>
<!--afx-label text = "__(Detail)" class="header" iconclass='fa fa-square' data-height="23"></afx-label-->
<afx-tree-view data-id="obj-view"></afx-tree-view>
<div data-height="25"></div>
</afx-vbox>
</afx-hbox>
</afx-vbox>
</afx-app-window>

View File

@ -1,3 +1,3 @@
# IOMail
# GPClient
Simple Mail client wrapper for https://mail.iohub.dev/
Simple Multi purpose client wrapper

View File

@ -1,3 +1,3 @@
# IOMail
# GPClient
Simple Mail client wrapper for https://mail.iohub.dev/
Simple Multi purpose client wrapper

View File

@ -1 +1 @@
(function(){var t,i,e;(t=class t extends this.OS.GUI.BasicDialog{constructor(){super("ClientDialog",t.scheme)}main(){var t,i,e,n;if(super.main(),e=$(this.scheme).find("input[type=text]"),this.data)for(i=0,n=e.length;i<n;i++)t=e[i],this.data[t.name]&&(t.value=this.data[t.name]);return this.find("btncancel").onbtclick=()=>this.quit(),this.find("btnok").onbtclick=i=>{var n,a,s;for(n={},a=0,s=e.length;a<s;a++){if(""===(t=e[a]).value)return this.notify(__("Please enter all the fields"));n[t.name]=t.value}return this.handle&&this.handle(n),this.quit()}}}).scheme='<afx-app-window width=\'300\' height=\'160\'>\n <afx-hbox>\n <div data-width="5"></div>\n <afx-vbox>\n <div data-height="5"></div>\n <afx-label data-height="25" text = "__(Client name)"></afx-label>\n <input type="text" name="text" data-height="25" />\n <div data-height="5"></div>\n <afx-label data-height="25" text = "__(URL)"></afx-label>\n <input type="text" name="url" data-height="25" />\n <div data-height="30" style="text-align: right;">\n <afx-button data-id="btnok" text="__(Ok)"></afx-button>\n <afx-button data-id="btncancel" text="__(Cancel)"></afx-button>\n </div>\n </afx-vbox>\n <div data-width="5"></div>\n </afx-hbox>\n</afx-app-window>',(i=class i extends this.OS.GUI.BasicDialog{constructor(){super("ClientListDialog",i.scheme)}main(){return super.main(),this.clist=this.find("client-list"),this.clist.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:i=>this.openDialog(new t,{title:__("Add new client")}).then(t=>(this.parent.setting.clients.push(t),this.clist.data=this.parent.setting.clients))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var i,e;if(e=this.clist.selectedItem,i=this.clist.selected,e)return this.ask({text:__("Do you realy want to delete: `{0}`",e.data.text)}).then(t=>{if(t)return this.parent.setting.clients.splice(i,1),this.clist.data=this.parent.setting.clients})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:i=>{var e;if(e=this.clist.selectedItem)return this.openDialog(new t,{title:__("Add new client"),text:e.data.text,url:e.data.url}).then(t=>{if(t)return e.data.text=t.text,e.data.url=t.url,this.clist.data=this.parent.setting.clients})}}],this.find("btnswitch").onbtclick=t=>{var i;if(i=this.clist.selectedItem)return this.parent.setting.curl=i.data.url,this.parent.setting.cname=i.data.text,this.parent.switchClient(),this.quit()},this.clist.data=this.parent.setting.clients}}).scheme='<afx-app-window width=\'200\' height=\'200\'>\n <afx-vbox>\n <afx-list-view data-id="client-list"></afx-list-view>\n <div data-height="30" style="text-align: right;">\n <afx-button text="__(Switch client)" data-id="btnswitch"></afx-button>\n <div>\n </afx-vbox>\n</afx-app-window>',(e=class extends this.OS.application.BaseApplication{constructor(t){super("GPClient",t)}main(){return this.setting.clients||(this.setting.clients=[]),this.container=this.find("container"),this.bindKey("CTRL-M",()=>this.openDialog(new i,{title:__("Client Manager")})),this.switchClient()}switchClient(){return this.setting.curl?(this.container.src=this.setting.curl,this.scheme.apptitle=this.setting.cname):this.notify(__("No client selected, manager client in menu Options > Client manager"))}menu(){return[{text:"__(Options)",nodes:[{text:"__(Client manager)",shortcut:"C-M"}],onchildselect:t=>this.openDialog(new i,{title:__("Client Manager")})}]}}).singleton=!0,this.OS.register("GPClient",e)}).call(this);
(function(){var t,i,e;(t=class t extends this.OS.GUI.BasicDialog{constructor(){super("ClientDialog",t.scheme)}main(){var t,i,e,n;if(super.main(),e=$(this.scheme).find("input[type=text]"),this.data)for(i=0,n=e.length;i<n;i++)t=e[i],this.data[t.name]&&(t.value=this.data[t.name]);return this.find("btncancel").onbtclick=()=>this.quit(),this.find("btnok").onbtclick=i=>{var n,a,s;for(n={},a=0,s=e.length;a<s;a++){if(""===(t=e[a]).value)return this.notify(__("Please enter all the fields"));n[t.name]=t.value}return this.handle&&this.handle(n),this.quit()}}}).scheme='<afx-app-window width=\'300\' height=\'160\'>\n <afx-hbox>\n <div data-width="5"></div>\n <afx-vbox>\n <div data-height="5"></div>\n <afx-label data-height="25" text = "__(Client name)"></afx-label>\n <input type="text" name="text" data-height="25" ></input>\n <div data-height="5"></div>\n <afx-label data-height="25" text = "__(URL)"></afx-label>\n <input type="text" name="url" data-height="25" ></input>\n <div data-height="30" style="text-align: right;">\n <afx-button data-id="btnok" text="__(Ok)"></afx-button>\n <afx-button data-id="btncancel" text="__(Cancel)"></afx-button>\n </div>\n </afx-vbox>\n <div data-width="5"></div>\n </afx-hbox>\n</afx-app-window>',(i=class i extends this.OS.GUI.BasicDialog{constructor(){super("ClientListDialog",i.scheme)}main(){return super.main(),this.clist=this.find("client-list"),this.clist.buttons=[{text:"",iconclass:"fa fa-plus-circle",onbtclick:i=>this.openDialog(new t,{title:__("Add new client")}).then(t=>(this.parent.setting.clients.push(t),this.clist.data=this.parent.setting.clients))},{text:"",iconclass:"fa fa-minus-circle",onbtclick:t=>{var i,e;if(e=this.clist.selectedItem,i=this.clist.selected,e)return this.ask({text:__("Do you realy want to delete: `{0}`",e.data.text)}).then(t=>{if(t)return this.parent.setting.clients.splice(i,1),this.clist.data=this.parent.setting.clients})}},{text:"",iconclass:"fa fa-pencil-square-o",onbtclick:i=>{var e;if(e=this.clist.selectedItem)return this.openDialog(new t,{title:__("Add new client"),text:e.data.text,url:e.data.url}).then(t=>{if(t)return e.data.text=t.text,e.data.url=t.url,this.clist.data=this.parent.setting.clients})}}],this.find("btnswitch").onbtclick=t=>{var i;if(i=this.clist.selectedItem)return this.parent.setting.curl=i.data.url,this.parent.setting.cname=i.data.text,this.parent.switchClient(),this.quit()},this.clist.data=this.parent.setting.clients}}).scheme='<afx-app-window width=\'200\' height=\'200\'>\n <afx-vbox>\n <afx-list-view data-id="client-list"></afx-list-view>\n <div data-height="30" style="text-align: right;">\n <afx-button text="__(Switch client)" data-id="btnswitch"></afx-button>\n <div>\n </afx-vbox>\n</afx-app-window>',(e=class extends this.OS.application.BaseApplication{constructor(t){super("GPClient",t)}main(){return this.setting.clients||(this.setting.clients=[]),this.container=this.find("container"),this.bindKey("CTRL-M",()=>this.openDialog(new i,{title:__("Client Manager")})),this.switchClient()}switchClient(){return this.setting.curl?(this.container.src=this.setting.curl,this.scheme.apptitle=this.setting.cname):this.notify(__("No client selected, manager client in menu Options > Client manager"))}menu(){return[{text:"__(Options)",nodes:[{text:"__(Client manager)",shortcut:"C-M"}],onchildselect:t=>this.openDialog(new i,{title:__("Client Manager")})}]}}).singleton=!0,this.OS.register("GPClient",e)}).call(this);

View File

@ -7,9 +7,9 @@
"author": "Xuan Sang LE",
"email": "mrsang@iohub.dev"
},
"version":"0.1.0-a",
"version":"0.1.2-a",
"category":"Internet",
"iconclass":"fa fa-globe",
"iconclass":"bi bi-hurricane",
"mimes":["none"],
"dependencies":[],
"locale": {}

Binary file not shown.

View File

@ -7,9 +7,9 @@
"author": "Xuan Sang LE",
"email": "mrsang@iohub.dev"
},
"version":"0.1.0-a",
"version":"0.1.2-a",
"category":"Internet",
"iconclass":"fa fa-globe",
"iconclass":"bi bi-hurricane",
"mimes":["none"],
"dependencies":[],
"locale": {}

View File

@ -3,7 +3,7 @@
Generate graph from text using mermaid
## Change logs
* v0.0.9-a: Change category
* v0.0.8-a: Fix ace path
* v0.0.7-a: Fix worker path
* v0.0.6-a: Fix unable to export image from tainted canvas

View File

@ -3,7 +3,7 @@
Generate graph from text using mermaid
## Change logs
* v0.0.9-a: Change category
* v0.0.8-a: Fix ace path
* v0.0.7-a: Fix worker path
* v0.0.6-a: Fix unable to export image from tainted canvas

View File

@ -7,8 +7,8 @@
"email": "xsang.le@gmail.com",
"licences": "GPLv3"
},
"version":"0.0.8-a",
"category":"Office",
"version":"0.0.9-a",
"category":"Graphics",
"iconclass": "fa fa-sitemap",
"mimes":["text/.*graphviz"]
}

View File

@ -7,8 +7,8 @@
"email": "xsang.le@gmail.com",
"licences": "GPLv3"
},
"version":"0.0.8-a",
"category":"Office",
"version":"0.0.9-a",
"category":"Graphics",
"iconclass": "fa fa-sitemap",
"mimes":["text/.*graphviz"]
}

View File

@ -5,5 +5,6 @@ Application for serverside code testing and analytics tool.
It allows to execute lua code on the server from the browser
## Change logs
* 0.0.7-a: Change icon and category
* 0.0.6-a: Fix ace path error
* 0.0.5-a: Fix worker path error

View File

@ -5,5 +5,6 @@ Application for serverside code testing and analytics tool.
It allows to execute lua code on the server from the browser
## Change logs
* 0.0.7-a: Change icon and category
* 0.0.6-a: Fix ace path error
* 0.0.5-a: Fix worker path error

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LEs",
"email": "xsang.le@gmail.com"
},
"version":"0.0.6-a",
"category":"System",
"iconclass":"fa fa-adn",
"version":"0.0.7-a",
"category":"Development",
"iconclass":"bi gear-full",
"mimes":["none"]
}

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LEs",
"email": "xsang.le@gmail.com"
},
"version":"0.0.6-a",
"category":"System",
"iconclass":"fa fa-adn",
"version":"0.0.7-a",
"category":"Development",
"iconclass":"bi gear-full",
"mimes":["none"]
}

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.0.7-a",
"category":"Utils",
"version":"0.0.8-a",
"category":"Office",
"iconclass":"fa fa-leanpub",
"dependencies": ["SimpleMDE@1.11.2-r"],
"mimes":["text/.*"]

Binary file not shown.

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.0.7-a",
"category":"Utils",
"version":"0.0.8-a",
"category":"Office",
"iconclass":"fa fa-leanpub",
"dependencies": ["SimpleMDE@1.11.2-r"],
"mimes":["text/.*"]

View File

@ -7,7 +7,7 @@
"email": "xsang.le@gmail.com"
},
"version":"0.0.8-a",
"category":"Multimedia",
"category":"Media",
"iconclass":"fa fa-headphones",
"mimes":["none"]
}

File diff suppressed because one or more lines are too long

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.3-a",
"category":"Other",
"version":"0.1.4-a",
"category":"Office",
"icon":"icon.png",
"mimes":["application/vnd.oasis.opendocument.text"]
}

Binary file not shown.

View File

@ -6,8 +6,8 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.3-a",
"category":"Other",
"version":"0.1.4-a",
"category":"Office",
"icon":"icon.png",
"mimes":["application/vnd.oasis.opendocument.text"]
}

View File

@ -8,4 +8,5 @@ This application reauires the **tunel plugin** and the **ant-tunnel v4l2 publish
on the server-side
## Change log
* v0.1.4-a: change app category
* v0.1.2-a: user worker for jpeg decoding

View File

@ -8,4 +8,5 @@ This application reauires the **tunel plugin** and the **ant-tunnel v4l2 publish
on the server-side
## Change log
* v0.1.4-a: change app category
* v0.1.2-a: user worker for jpeg decoding

View File

@ -7,8 +7,8 @@
"author": "",
"email": ""
},
"version":"0.1.3-a",
"category":"Other",
"version":"0.1.4-a",
"category":"Graphics",
"iconclass":"fa fa-camera",
"mimes":["none"],
"dependencies":["libjpeg@0.1.1-a", "Antunnel@0.1.8-a"],

View File

@ -7,8 +7,8 @@
"author": "",
"email": ""
},
"version":"0.1.3-a",
"category":"Other",
"version":"0.1.4-a",
"category":"Graphics",
"iconclass":"fa fa-camera",
"mimes":["none"],
"dependencies":["libjpeg@0.1.1-a", "Antunnel@0.1.8-a"],

View File

@ -7,6 +7,6 @@ Further information on **wvnc**: [https://blog.lxsang.me/post/id/23](https://blo
## Change logs
* v0.1.6 - Change category
* v0.1.5 - add package dependencies and use the new **libwvnc**
* v0.1.0 - adapt to the new AntOS API

View File

@ -1,5 +1,5 @@
# WVNC remote desktop
![](https://os.lxsang.me/repo/RemoteDesktop/RemoteDesktop.png)
![](https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteDesktop/screenshot.jpg)
A web based VNC client allowing to control remote VNC desktop from browser. The application is based on **wvnc**, a protocol and API that uses web socket to communicate with remote VNC server.
@ -7,6 +7,6 @@ Further information on **wvnc**: [https://blog.lxsang.me/post/id/23](https://blo
## Change logs
* v0.1.6 - Change category
* v0.1.5 - add package dependencies and use the new **libwvnc**
* v0.1.0 - adapt to the new AntOS API

View File

@ -6,9 +6,9 @@
"author": "",
"email": ""
},
"version":"0.1.5-a",
"version":"0.1.6-a",
"dependencies": ["libwvnc@0.1.2-a"],
"category":"Other",
"category":"Internet",
"icon": "icon.png",
"mimes":["none"]
}

View File

@ -6,9 +6,9 @@
"author": "",
"email": ""
},
"version":"0.1.5-a",
"version":"0.1.6-a",
"dependencies": ["libwvnc@0.1.2-a"],
"category":"Other",
"category":"Internet",
"icon": "icon.png",
"mimes":["none"]
}

View File

@ -7,8 +7,8 @@
"email": "xsang.le@gmail.com",
"licences": "GPLv3"
},
"version":"0.0.6-a",
"category":"Other",
"version":"0.0.7-a",
"category":"Utility",
"mimes":["none"],
"iconclass": "fa fa-delicious",
"locales": {

Binary file not shown.

View File

@ -7,8 +7,8 @@
"email": "xsang.le@gmail.com",
"licences": "GPLv3"
},
"version":"0.0.6-a",
"category":"Other",
"version":"0.0.7-a",
"category":"Utility",
"mimes":["none"],
"iconclass": "fa fa-delicious",
"locales": {

View File

@ -14,8 +14,8 @@
"Antunnel@0.1.8-a"
],
"version":"0.1.9-a",
"category":"Other",
"iconclass":"fa fa-android",
"category":"System",
"iconclass":"fa fa-tachometer",
"mimes":["none"],
"locale": {}
}

View File

@ -14,8 +14,8 @@
"Antunnel@0.1.8-a"
],
"version":"0.1.9-a",
"category":"Other",
"iconclass":"fa fa-android",
"category":"System",
"iconclass":"fa fa-tachometer",
"mimes":["none"],
"locale": {}
}

View File

@ -8,7 +8,7 @@
"licences": "GPLv3"
},
"version":"0.0.2-a",
"category":"Office",
"iconclass": "fa fa-sitemap",
"category":"Graphics",
"iconclass": "bi bi-bounding-box",
"mimes":["text/.*graphviz"]
}

Binary file not shown.

View File

@ -8,7 +8,7 @@
"licences": "GPLv3"
},
"version":"0.0.2-a",
"category":"Office",
"iconclass": "fa fa-sitemap",
"category":"Graphics",
"iconclass": "bi bi-bounding-box",
"mimes":["text/.*graphviz"]
}

View File

@ -3,9 +3,9 @@
"pkgname": "About",
"name": "About AntOS",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/README.md",
"category": "Other",
"category": "Utility",
"author": "Xuan Sang LE",
"version": "0.0.6-a",
"version": "0.0.7-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/build/release/About.zip"
},
@ -43,9 +43,9 @@
"pkgname": "Archive",
"name": "Archive",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Archive/README.md",
"category": "Other",
"category": "Utility",
"author": "Xuan Sang LE",
"version": "0.0.2-a",
"version": "0.0.3-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Archive/build/release/Archive.zip"
},
@ -63,9 +63,9 @@
"pkgname": "Booklet",
"name": "Booklet",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Booklet/README.md",
"category": "Other",
"category": "Office",
"author": "Xuan Sang LE",
"version": "0.2.2-a",
"version": "0.2.3-a",
"dependencies": ["SimpleMDE@1.11.2-r","Katex@0.11.1-r"],"mimes":["dir"],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Booklet/build/release/Booklet.zip"
},
@ -73,9 +73,9 @@
"pkgname": "Clipper",
"name": "Clipper",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Clipper/README.md",
"category": "Other",
"category": "Utility",
"author": "Xuan Sang LE",
"version": "0.1.2-a",
"version": "0.1.3-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Clipper/build/release/Clipper.zip"
},
@ -93,9 +93,9 @@
"pkgname": "DiffEditor",
"name": "Diff Editor",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/DiffEditor/README.md",
"category": "Other",
"category": "Development",
"author": "",
"version": "0.1.2-a",
"version": "0.1.3-a",
"dependencies": ["AceDiff@3.0.3-r"],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/DiffEditor/build/release/DiffEditor.zip"
},
@ -103,19 +103,29 @@
"pkgname": "Docify",
"name": "Docify",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/README.md",
"category": "Other",
"category": "Office",
"author": "",
"version": "0.0.6-a",
"version": "0.0.7-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/build/release/Docify.zip"
},
{
"pkgname": "Dockman",
"name": "Remote Docker Manager",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Dockman/README.md",
"category": "Development",
"author": "Xuan Sang LE",
"version": "0.1.0-b",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Dockman/build/release/Dockman.zip"
},
{
"pkgname": "GPClient",
"name": "Generic Purpose client",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GPClient/README.md",
"category": "Internet",
"author": "Xuan Sang LE",
"version": "0.1.0-a",
"version": "0.1.2-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GPClient/build/release/GPClient.zip"
},
@ -123,9 +133,9 @@
"pkgname": "GraphEditor",
"name": "Graph Editor",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GraphEditor/README.md",
"category": "Office",
"category": "Graphics",
"author": "Xuan Sang LE",
"version": "0.0.8-a",
"version": "0.0.9-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/GraphEditor/build/release/GraphEditor.zip"
},
@ -173,9 +183,9 @@
"pkgname": "LuaPlayground",
"name": "LuaPlayground",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/README.md",
"category": "System",
"category": "Development",
"author": "Xuan Sang LEs",
"version": "0.0.6-a",
"version": "0.0.7-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/build/release/LuaPlayground.zip"
},
@ -183,9 +193,9 @@
"pkgname": "MarkOn",
"name": "Markdown editor",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/README.md",
"category": "Utils",
"category": "Office",
"author": "Xuan Sang LE",
"version": "0.0.7-a",
"version": "0.0.8-a",
"dependencies": ["SimpleMDE@1.11.2-r"],"mimes":["text/.*"],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/build/release/MarkOn.zip"
},
@ -203,9 +213,9 @@
"pkgname": "OpenPage",
"name": "OpenPage",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/OpenPage/README.md",
"category": "Other",
"category": "Office",
"author": "Xuan Sang LE",
"version": "0.1.3-a",
"version": "0.1.4-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/OpenPage/build/release/OpenPage.zip"
},
@ -223,9 +233,9 @@
"pkgname": "RemoteCamera",
"name": "Remote Camera",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteCamera/README.md",
"category": "Other",
"category": "Graphics",
"author": "",
"version": "0.1.3-a",
"version": "0.1.4-a",
"dependencies": ["libjpeg@0.1.1-a","Antunnel@0.1.8-a"],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteCamera/build/release/RemoteCamera.zip"
},
@ -233,19 +243,19 @@
"pkgname": "RemoteDesktop",
"name": "WVNC remote desktop",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteDesktop/README.md",
"category": "Other",
"category": "Internet",
"author": "",
"version": "0.1.5-a",
"dependencies": ["libwvnc@0.1.2-a"],"category":"Other","icon":"icon.png","mimes":["none"],
"version": "0.1.6-a",
"dependencies": ["libwvnc@0.1.2-a"],"category":"Internet","icon":"icon.png","mimes":["none"],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/RemoteDesktop/build/release/RemoteDesktop.zip"
},
{
"pkgname": "ShowCase",
"name": "ShowCase",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/README.md",
"category": "Other",
"category": "Utility",
"author": "Xuan Sang LE",
"version": "0.0.6-a",
"version": "0.0.7-a",
"dependencies": [],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/build/release/ShowCase.zip"
},
@ -263,10 +273,10 @@
"pkgname": "SystemControl",
"name": "System monitoring",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/SystemControl/README.md",
"category": "Other",
"category": "System",
"author": "",
"version": "0.1.9-a",
"dependencies": ["Antunnel@0.1.8-a"],"version":"0.1.9-a","category":"Other","iconclass":"fafa-android","mimes":["none"],
"dependencies": ["Antunnel@0.1.8-a"],"version":"0.1.9-a","category":"System","iconclass":"fafa-tachometer","mimes":["none"],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/SystemControl/build/release/SystemControl.zip"
},
{
@ -283,7 +293,7 @@
"pkgname": "VizApp",
"name": "Viz editor",
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/VizApp/README.md",
"category": "Office",
"category": "Graphics",
"author": "Xuan Sang LE",
"version": "0.0.2-a",
"dependencies": [],
@ -295,7 +305,7 @@
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/vTerm/README.md",
"category": "System",
"author": "Xuan Sang LE",
"version": "0.1.13-a",
"version": "0.1.14-a",
"dependencies": ["Antunnel@0.1.8-a","xTerm@4.8.1-r"],
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/vTerm/build/release/vTerm.zip"
},

View File

@ -12,6 +12,7 @@ VTerm depends on the server side **tunnel** plugin and the AntOS **Antunnel**
client side package
## Change logs
- v0.1.14-a: Change app icon
- v0.1.12-a: Add copy/paste shortcuts (CTRL+SHIFT+C/ CTRL+SHIFT+V)
- v0.1.9-a: Update dependencies to latest
- v0.1.6-a: Add dependencies to package meta-data

View File

@ -12,6 +12,7 @@ VTerm depends on the server side **tunnel** plugin and the AntOS **Antunnel**
client side package
## Change logs
- v0.1.14-a: Change app icon
- v0.1.12-a: Add copy/paste shortcuts (CTRL+SHIFT+C/ CTRL+SHIFT+V)
- v0.1.9-a: Update dependencies to latest
- v0.1.6-a: Add dependencies to package meta-data

View File

@ -6,9 +6,9 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.13-a",
"version":"0.1.14-a",
"category":"System",
"iconclass":"fa fa-terminal",
"iconclass":"bi bi-terminal-fill",
"mimes":["none"],
"dependencies": [
"Antunnel@0.1.8-a",

Binary file not shown.

View File

@ -6,9 +6,9 @@
"author": "Xuan Sang LE",
"email": "xsang.le@gmail.com"
},
"version":"0.1.13-a",
"version":"0.1.14-a",
"category":"System",
"iconclass":"fa fa-terminal",
"iconclass":"bi bi-terminal-fill",
"mimes":["none"],
"dependencies": [
"Antunnel@0.1.8-a",