deskssh 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -63
- package/package.json +24 -38
- package/.eslintrc.cjs +0 -21
- package/.github/workflows/ci.yml +0 -40
- package/.prettierignore +0 -5
- package/.prettierrc.json +0 -6
- package/CONTRIBUTING.md +0 -59
- package/LICENSE +0 -661
- package/packages/cli/README.md +0 -11
- package/packages/cli/package.json +0 -37
- package/packages/core/dist/index.d.ts +0 -2
- package/packages/core/dist/index.d.ts.map +0 -1
- package/packages/core/dist/index.js +0 -6
- package/packages/core/dist/index.js.map +0 -1
- package/packages/core/package.json +0 -22
- package/packages/core/src/index.test.ts +0 -8
- package/packages/core/src/index.ts +0 -6
- package/packages/core/tsconfig.json +0 -9
- package/packages/server/dist/index.d.ts +0 -3
- package/packages/server/dist/index.d.ts.map +0 -1
- package/packages/server/dist/index.js +0 -7
- package/packages/server/dist/index.js.map +0 -1
- package/packages/server/package.json +0 -19
- package/packages/server/src/index.ts +0 -8
- package/packages/server/tsconfig.json +0 -10
- package/packages/web/dist/assets/index-DNUNZ8WK.js +0 -65
- package/packages/web/dist/index.html +0 -12
- package/packages/web/index.html +0 -12
- package/packages/web/node_modules/.bin/browserslist +0 -17
- package/packages/web/node_modules/.bin/vite +0 -17
- package/packages/web/package.json +0 -27
- package/packages/web/src/App.tsx +0 -17
- package/packages/web/src/i18n/en.ts +0 -8
- package/packages/web/src/i18n/es.ts +0 -7
- package/packages/web/src/i18n/index.ts +0 -27
- package/packages/web/src/main.tsx +0 -12
- package/packages/web/tsconfig.json +0 -14
- package/packages/web/vite.config.ts +0 -6
- package/pnpm-workspace.yaml +0 -2
- package/specs/001-core/plan.md +0 -246
- package/specs/001-core/spec.md +0 -206
- package/specs/001-core/tasks.md +0 -110
- package/specs/constitution.md +0 -110
- package/specs/glossary.md +0 -35
- package/specs/vision.md +0 -145
- package/tsconfig.base.json +0 -23
- package/tsconfig.json +0 -4
- package/vitest.config.ts +0 -7
- /package/{packages/cli/bin → bin}/deskssh.js +0 -0
package/README.md
CHANGED
|
@@ -1,66 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
# DeskSSH
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
executed on the remote host. <em>It is not remote desktop.</em>
|
|
7
|
-
</p>
|
|
3
|
+
**A graphical desktop over plain SSH.** The GUI is synthesized on the client and
|
|
4
|
+
every action is translated into commands executed on the remote host. _Not remote
|
|
5
|
+
desktop. Agentless._
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
> ⚠️ **Early development — not yet functional.** This `0.0.1` reserves the package
|
|
8
|
+
> name and provides the future `deskssh` launch command. Follow progress on GitHub.
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
You connect via SSH to a server **with no graphical environment** and DeskSSH
|
|
14
|
-
shows you a familiar desktop —file manager, terminal, system monitor, editor,
|
|
15
|
-
service manager…—. Behind the scenes, every click runs the equivalent command
|
|
16
|
-
(`ls`, `stat`, `mv`, `systemctl`, `ps`…) and the interface is built from its
|
|
17
|
-
output.
|
|
18
|
-
|
|
19
|
-
### What makes it different
|
|
20
|
-
|
|
21
|
-
- **Not VNC/RDP/X.** No pixels travel: the GUI is generated locally.
|
|
22
|
-
- **Agentless.** Installs nothing on the server; only needs SSH and standard POSIX
|
|
23
|
-
utilities.
|
|
24
|
-
- **Transparent.** You can always see the command behind each action.
|
|
25
|
-
- **100% open source.**
|
|
26
|
-
|
|
27
|
-
## Origin and motivation
|
|
28
|
-
|
|
29
|
-
DeskSSH started as a project in **ASP.NET with .NET 8**. As it grew, I felt
|
|
30
|
-
overwhelmed by the sheer number of commands and cases the tool could end up
|
|
31
|
-
covering. I began reviewing and improving the code with the help of AI, but ended
|
|
32
|
-
up making a more radical decision: **restart the project from scratch**, also with
|
|
33
|
-
AI, in order to:
|
|
34
|
-
|
|
35
|
-
- use languages and technologies **more widely accepted by the community**, and
|
|
36
|
-
- leverage **npm's ease of distribution** for simple adoption.
|
|
37
|
-
|
|
38
|
-
This rewrite is developed with **Spec-Driven Development**: decisions are
|
|
39
|
-
documented in `specs/` before any code is written.
|
|
40
|
-
|
|
41
|
-
The reason for making it **open source** is simple: I want DeskSSH to become a
|
|
42
|
-
**genuinely useful and popular** tool, built and improved by the community.
|
|
43
|
-
|
|
44
|
-
## Status
|
|
45
|
-
|
|
46
|
-
🚧 **In design.** The project is developed with **Spec-Driven Development**: right
|
|
47
|
-
now only the specification exists; code comes later. Start with:
|
|
48
|
-
|
|
49
|
-
- [`specs/vision.md`](specs/vision.md) — the why and the where-to (the vision).
|
|
50
|
-
- [`specs/constitution.md`](specs/constitution.md) — the project's principles.
|
|
51
|
-
- [`specs/001-core/spec.md`](specs/001-core/spec.md) — what DeskSSH does.
|
|
52
|
-
- [`specs/001-core/plan.md`](specs/001-core/plan.md) — how it will be built.
|
|
53
|
-
- [`specs/glossary.md`](specs/glossary.md) — the domain vocabulary.
|
|
54
|
-
|
|
55
|
-
## How to contribute
|
|
56
|
-
|
|
57
|
-
This project follows SDD: design discussions happen in `specs/` **before** they
|
|
58
|
-
reach the code. To propose something, open the conversation on the relevant
|
|
59
|
-
document. (Detailed contribution guide: pending — `M0`.)
|
|
60
|
-
|
|
61
|
-
## License
|
|
62
|
-
|
|
63
|
-
[**GNU AGPL-3.0-or-later**](LICENSE). Strong copyleft with a network clause: if you
|
|
64
|
-
modify DeskSSH and offer it as a network-accessible service, you must publish your
|
|
65
|
-
changes. Chosen so the project and all its improvements stay free. See
|
|
66
|
-
[`specs/constitution.md`](specs/constitution.md), Article 9.
|
|
10
|
+
- Repository & docs: https://github.com/nestorrguez/DeskSSH
|
|
11
|
+
- License: **AGPL-3.0-or-later**
|
package/package.json
CHANGED
|
@@ -1,51 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deskssh",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"
|
|
5
|
-
"description": "A graphical desktop over plain SSH — workspace root",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "A graphical desktop over plain SSH. Early development — not yet functional.",
|
|
6
5
|
"license": "AGPL-3.0-or-later",
|
|
7
6
|
"type": "module",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
},
|
|
11
|
-
"packageManager": "pnpm@9.15.9",
|
|
12
|
-
"scripts": {
|
|
13
|
-
"build": "pnpm -r build",
|
|
14
|
-
"test": "vitest run",
|
|
15
|
-
"test:watch": "vitest",
|
|
16
|
-
"typecheck": "tsc -b",
|
|
17
|
-
"lint": "eslint .",
|
|
18
|
-
"format": "prettier --write .",
|
|
19
|
-
"format:check": "prettier --check ."
|
|
20
|
-
},
|
|
21
|
-
"devDependencies": {
|
|
22
|
-
"@types/node": "^20.14.0",
|
|
23
|
-
"@typescript-eslint/eslint-plugin": "^7.13.0",
|
|
24
|
-
"@typescript-eslint/parser": "^7.13.0",
|
|
25
|
-
"eslint": "^8.57.0",
|
|
26
|
-
"eslint-config-prettier": "^9.1.0",
|
|
27
|
-
"prettier": "^3.3.2",
|
|
28
|
-
"typescript": "^5.4.5",
|
|
29
|
-
"vitest": "^1.6.0"
|
|
30
|
-
},
|
|
31
|
-
"main": "index.js",
|
|
32
|
-
"dependencies": {
|
|
33
|
-
"eslint-scope": "^7.2.2",
|
|
34
|
-
"eslint-visitor-keys": "^3.4.3"
|
|
35
|
-
},
|
|
36
|
-
"repository": {
|
|
37
|
-
"type": "git",
|
|
38
|
-
"url": "git+https://github.com/nestorrguez/DeskSSH.git"
|
|
7
|
+
"bin": {
|
|
8
|
+
"deskssh": "bin/deskssh.js"
|
|
39
9
|
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
40
14
|
"keywords": [
|
|
41
15
|
"ssh",
|
|
42
|
-
"
|
|
16
|
+
"sftp",
|
|
43
17
|
"gui",
|
|
44
|
-
"
|
|
18
|
+
"desktop",
|
|
19
|
+
"sysadmin",
|
|
20
|
+
"devops",
|
|
21
|
+
"agentless"
|
|
45
22
|
],
|
|
46
|
-
"
|
|
23
|
+
"homepage": "https://github.com/nestorrguez/DeskSSH",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/nestorrguez/DeskSSH.git"
|
|
27
|
+
},
|
|
47
28
|
"bugs": {
|
|
48
29
|
"url": "https://github.com/nestorrguez/DeskSSH/issues"
|
|
49
30
|
},
|
|
50
|
-
"
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "true"
|
|
36
|
+
}
|
|
51
37
|
}
|
package/.eslintrc.cjs
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/* eslint-env node */
|
|
2
|
-
module.exports = {
|
|
3
|
-
root: true,
|
|
4
|
-
parser: '@typescript-eslint/parser',
|
|
5
|
-
parserOptions: {
|
|
6
|
-
ecmaVersion: 2022,
|
|
7
|
-
sourceType: 'module',
|
|
8
|
-
ecmaFeatures: { jsx: true },
|
|
9
|
-
},
|
|
10
|
-
plugins: ['@typescript-eslint'],
|
|
11
|
-
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
|
|
12
|
-
env: {
|
|
13
|
-
es2022: true,
|
|
14
|
-
node: true,
|
|
15
|
-
browser: true,
|
|
16
|
-
},
|
|
17
|
-
ignorePatterns: ['dist', 'node_modules', '*.cjs'],
|
|
18
|
-
rules: {
|
|
19
|
-
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
20
|
-
},
|
|
21
|
-
};
|
package/.github/workflows/ci.yml
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [main]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
build:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@v4
|
|
14
|
-
|
|
15
|
-
- name: Setup pnpm
|
|
16
|
-
uses: pnpm/action-setup@v4
|
|
17
|
-
|
|
18
|
-
- name: Setup Node.js
|
|
19
|
-
uses: actions/setup-node@v4
|
|
20
|
-
with:
|
|
21
|
-
node-version: 22
|
|
22
|
-
cache: pnpm
|
|
23
|
-
|
|
24
|
-
- name: Install dependencies
|
|
25
|
-
run: pnpm install --frozen-lockfile
|
|
26
|
-
|
|
27
|
-
- name: Format check
|
|
28
|
-
run: pnpm format:check
|
|
29
|
-
|
|
30
|
-
- name: Lint
|
|
31
|
-
run: pnpm lint
|
|
32
|
-
|
|
33
|
-
- name: Typecheck
|
|
34
|
-
run: pnpm typecheck && pnpm --filter @deskssh/web typecheck
|
|
35
|
-
|
|
36
|
-
- name: Test
|
|
37
|
-
run: pnpm test
|
|
38
|
-
|
|
39
|
-
- name: Build
|
|
40
|
-
run: pnpm build
|
package/.prettierignore
DELETED
package/.prettierrc.json
DELETED
package/CONTRIBUTING.md
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Contributing to DeskSSH
|
|
2
|
-
|
|
3
|
-
Thanks for your interest in DeskSSH! This project is built with **Spec-Driven
|
|
4
|
-
Development (SDD)**: design decisions are made in `specs/` **before** they reach the
|
|
5
|
-
code. That keeps the project coherent and lets anyone understand _why_ things are
|
|
6
|
-
the way they are.
|
|
7
|
-
|
|
8
|
-
## Ground rules
|
|
9
|
-
|
|
10
|
-
- **English only** in the repository (code, comments, docs, commit messages, specs).
|
|
11
|
-
The repo is public and international.
|
|
12
|
-
- **Read the specs first.** Start with [`specs/vision.md`](specs/vision.md) and
|
|
13
|
-
[`specs/constitution.md`](specs/constitution.md). The constitution lists
|
|
14
|
-
**non-negotiable** principles — if a change conflicts with one, it won't be
|
|
15
|
-
accepted unless the constitution is explicitly amended.
|
|
16
|
-
- **Spec before code.** No behavior change lands without the spec being updated
|
|
17
|
-
first. For a non-trivial change, open a discussion/PR on the relevant document in
|
|
18
|
-
`specs/` before writing code.
|
|
19
|
-
- **Traceability.** Functional requirements have IDs (`FR-XXX`). Reference the
|
|
20
|
-
`FR-`/Article a change serves in the spec, tasks and PR description.
|
|
21
|
-
|
|
22
|
-
## Project layout
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
specs/ Source of truth (vision, constitution, glossary, 001-core/*)
|
|
26
|
-
packages/
|
|
27
|
-
core/ Frontend-agnostic core (SSH sessions, adapters, contract)
|
|
28
|
-
server/ Web gateway (keeps SSH sessions, exposes the API)
|
|
29
|
-
web/ Browser UI (desktop shell + app views)
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Local development
|
|
33
|
-
|
|
34
|
-
Requirements: **Node.js >= 20** and **pnpm 9** (`corepack enable pnpm` or
|
|
35
|
-
`npm i -g pnpm@9`).
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
pnpm install # install all workspaces
|
|
39
|
-
pnpm typecheck # type-check core + server
|
|
40
|
-
pnpm lint # ESLint
|
|
41
|
-
pnpm test # Vitest
|
|
42
|
-
pnpm build # build all packages
|
|
43
|
-
pnpm format # apply Prettier
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
CI runs format-check, lint, typecheck, test and build on every push/PR — please make
|
|
47
|
-
sure they pass locally first.
|
|
48
|
-
|
|
49
|
-
## Commits & pull requests
|
|
50
|
-
|
|
51
|
-
- Keep commits focused; write clear messages in English.
|
|
52
|
-
- Describe **what** and **why**, and reference the `FR-`/Article involved.
|
|
53
|
-
- Be kind and constructive. DeskSSH aims to be a welcoming, accessibility-first
|
|
54
|
-
project.
|
|
55
|
-
|
|
56
|
-
## License
|
|
57
|
-
|
|
58
|
-
By contributing, you agree that your contributions are licensed under
|
|
59
|
-
**AGPL-3.0-or-later**, the project's license.
|