Skip to content

Commit c7aaf1a

Browse files
committed
chore: first commit
0 parents  commit c7aaf1a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+7531
-0
lines changed

.actrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-P ubuntu-latest=node:24-bookworm
2+
--container-architecture linux/arm64

.dockerignore

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
node_modules
2+
.pnpm-store
3+
.git
4+
.github
5+
6+
.DS_Store
7+
*.log
8+
*.cover
9+
*.tmp
10+
11+
docs
12+
13+
apps/web/dist
14+
apps/web/test
15+
apps/web/e2e
16+
apps/web/test-results
17+
apps/web/playwright-report
18+
apps/web/coverage
19+
20+
apps/server/woottyd
21+
**/*_test.go
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Bug report
2+
description: Report a reproducible problem in WooTTY
3+
title: "[Bug] "
4+
labels: [bug]
5+
body:
6+
- type: textarea
7+
id: summary
8+
attributes:
9+
label: Summary
10+
description: Clear description of the observed issue.
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: reproduction
16+
attributes:
17+
label: Reproduction steps
18+
description: List exact commands, browser, and actions.
19+
placeholder: |
20+
1. Start server with ...
21+
2. Open browser at ...
22+
3. Resize window ...
23+
validations:
24+
required: true
25+
26+
- type: textarea
27+
id: expected
28+
attributes:
29+
label: Expected behavior
30+
validations:
31+
required: true
32+
33+
- type: textarea
34+
id: logs
35+
attributes:
36+
label: Logs and screenshots
37+
description: Paste relevant browser console/server logs and screenshots.
38+
39+
- type: input
40+
id: version
41+
attributes:
42+
label: WooTTY version
43+
placeholder: v0.1.0
44+
45+
- type: input
46+
id: environment
47+
attributes:
48+
label: Environment
49+
placeholder: Node 24.x, Ubuntu 24.04, Chrome 122

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security disclosure
4+
url: https://github.com/icoretech/wootty/security/policy
5+
about: Please report vulnerabilities using the Security Policy process.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Feature request
2+
description: Propose an improvement for WooTTY
3+
title: "[Feature] "
4+
labels: [enhancement]
5+
body:
6+
- type: textarea
7+
id: problem
8+
attributes:
9+
label: Problem statement
10+
description: What operator pain does this solve?
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: proposal
16+
attributes:
17+
label: Proposed solution
18+
description: Describe behavior, UX, and any API impact.
19+
validations:
20+
required: true
21+
22+
- type: textarea
23+
id: alternatives
24+
attributes:
25+
label: Alternatives considered
26+
27+
- type: textarea
28+
id: additional
29+
attributes:
30+
label: Additional context

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## Summary
2+
3+
-
4+
5+
## Validation
6+
7+
- [ ] `pnpm lint`
8+
- [ ] `pnpm test`
9+
- [ ] `pnpm build`
10+
- [ ] `pnpm test:e2e`
11+
- [ ] `pnpm test:pty-smoke`
12+
13+
## Checklist
14+
15+
- [ ] Added/updated tests for behavior changes
16+
- [ ] Updated docs and README when user-facing behavior changed
17+
- [ ] Kept changes scoped and backwards compatible where applicable

.github/dependabot.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: "/"
5+
schedule:
6+
interval: weekly
7+
day: monday
8+
time: "05:00"
9+
timezone: Europe/Rome
10+
commit-message:
11+
prefix: "chore"
12+
include: scope
13+
ignore:
14+
- dependency-name: "*"
15+
update-types:
16+
- "version-update:semver-major"
17+
18+
- package-ecosystem: npm
19+
directory: "/"
20+
schedule:
21+
interval: weekly
22+
day: monday
23+
time: "05:15"
24+
timezone: Europe/Rome
25+
open-pull-requests-limit: 10
26+
versioning-strategy: increase-if-necessary
27+
commit-message:
28+
prefix: "chore"
29+
include: scope
30+
groups:
31+
frontend-runtime:
32+
patterns:
33+
- "react"
34+
- "react-dom"
35+
- "@xterm/*"
36+
frontend-tooling:
37+
patterns:
38+
- "@vitejs/*"
39+
- "vite"
40+
- "vitest"
41+
- "@playwright/*"
42+
server-runtime:
43+
patterns:
44+
- "fastify"
45+
- "@fastify/*"
46+
- "@lydell/node-pty"
47+
qa-tooling:
48+
patterns:
49+
- "@biomejs/*"
50+
- "typescript"
51+
- "tsx"
52+
- "concurrently"
53+
- "zod"
54+
- "ws"
55+
ignore:
56+
- dependency-name: "*"
57+
update-types:
58+
- "version-update:semver-major"

.github/workflows/ci.yml

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- main
8+
9+
concurrency:
10+
group: ci-${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
quality:
15+
name: Lint Test Build
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v6
21+
22+
- name: Setup pnpm
23+
uses: pnpm/action-setup@v4
24+
with:
25+
version: 10.30.0
26+
27+
- name: Setup Node.js
28+
uses: actions/setup-node@v6
29+
with:
30+
node-version: 24
31+
cache: pnpm
32+
33+
- name: Setup Go
34+
uses: actions/setup-go@v6
35+
with:
36+
go-version: "1.26.x"
37+
38+
- name: Install dependencies
39+
run: pnpm install --frozen-lockfile
40+
41+
- name: Lint (auto-format + typecheck)
42+
run: pnpm lint
43+
44+
- name: Ensure no formatting drift
45+
run: git diff --exit-code
46+
47+
- name: Unit and integration tests
48+
run: pnpm test
49+
50+
- name: Build
51+
run: pnpm build
52+
53+
e2e:
54+
name: Playwright E2E
55+
runs-on: ubuntu-latest
56+
needs: quality
57+
58+
steps:
59+
- name: Checkout
60+
uses: actions/checkout@v6
61+
62+
- name: Setup pnpm
63+
uses: pnpm/action-setup@v4
64+
with:
65+
version: 10.30.0
66+
67+
- name: Setup Node.js
68+
uses: actions/setup-node@v6
69+
with:
70+
node-version: 24
71+
cache: pnpm
72+
73+
- name: Setup Go
74+
uses: actions/setup-go@v6
75+
with:
76+
go-version: "1.26.x"
77+
78+
- name: Install dependencies
79+
run: pnpm install --frozen-lockfile
80+
81+
- name: Install Playwright browsers
82+
run: pnpm --filter @icoretech/wootty-web exec playwright install --with-deps chromium
83+
84+
- name: Browser E2E tests
85+
run: pnpm test:e2e
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Dependabot Auto Merge
2+
3+
on:
4+
pull_request_target:
5+
types:
6+
- opened
7+
- synchronize
8+
- reopened
9+
- ready_for_review
10+
11+
permissions:
12+
contents: write
13+
pull-requests: write
14+
15+
jobs:
16+
dependabot-automerge:
17+
if: github.actor == 'dependabot[bot]' && github.event.pull_request.draft == false
18+
runs-on: ubuntu-latest
19+
20+
steps:
21+
- name: Fetch Dependabot metadata
22+
id: metadata
23+
uses: dependabot/fetch-metadata@v2
24+
with:
25+
github-token: ${{ secrets.GITHUB_TOKEN }}
26+
27+
- name: Approve PR
28+
if: |
29+
contains(steps.metadata.outputs.update-type, 'version-update:semver-patch') ||
30+
contains(steps.metadata.outputs.update-type, 'version-update:semver-minor')
31+
run: gh pr review --approve "$PR_URL"
32+
env:
33+
PR_URL: ${{ github.event.pull_request.html_url }}
34+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35+
36+
- name: Enable auto-merge
37+
if: |
38+
contains(steps.metadata.outputs.update-type, 'version-update:semver-patch') ||
39+
contains(steps.metadata.outputs.update-type, 'version-update:semver-minor')
40+
run: gh pr merge --auto --squash "$PR_URL"
41+
env:
42+
PR_URL: ${{ github.event.pull_request.html_url }}
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)