mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
chore(repo): P0 hygiene for the alpha reset
- gitignore .serena/ and Client/tauri-client/.env; untrack the .env (the KLIPY key it held is treated as burned; rotation + server-side proxy tracked for P3) - CI: verify generated sqlc output (make sqlc-verify) on the ubuntu leg - CHANGELOG: honest reset narrative (v1.1.0-alpha series), remove references to deleted roadmap files - delete stale docs/phase-a-status.md; fix dangling ref in docs/plans/slash-commands.md - add root SECURITY.md (GitHub-surfaced policy; reporting works while the source repo is private) - docs/audit-2026-04-07.md: add maintained finding-closure table Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -52,6 +52,12 @@ jobs:
|
||||
- name: Go vulnerability check
|
||||
run: go install golang.org/x/vuln/cmd/govulncheck@v1.1.4 && govulncheck ./...
|
||||
|
||||
# Generated sqlc output must never drift from db/queries/. One leg of
|
||||
# the matrix is enough; make is not guaranteed on the Windows runner.
|
||||
- name: Verify generated sqlc output (make sqlc-verify)
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: make sqlc-install sqlc-verify
|
||||
|
||||
- name: Run tests with race detection and coverage
|
||||
run: go test -race -timeout 20m ./... -coverprofile=coverage.out -cover
|
||||
|
||||
|
||||
@@ -71,3 +71,9 @@ TODOS.md
|
||||
CLAUDE.md
|
||||
DESIGN.md
|
||||
Client/CLIENT-REVIEW.md
|
||||
|
||||
# Agent tooling state
|
||||
.serena/
|
||||
|
||||
# Client env (holds API keys - never commit)
|
||||
Client/tauri-client/.env
|
||||
|
||||
+16
-15
@@ -5,7 +5,13 @@ tooling (`npm run changelog`) auto-generates entries from commit messages
|
||||
on each release; this file is the curated counterpart that calls out
|
||||
behavioural changes operators must know about.
|
||||
|
||||
## Unreleased — Phase B + C
|
||||
## Unreleased — v1.1.0-alpha series (Phase B + C)
|
||||
|
||||
> **Project reset note:** OwnCord has re-entered alpha. The `v1.0.0` release is
|
||||
> superseded; versioning continues forward as `v1.1.0-alpha.N` so deployed
|
||||
> servers and clients keep receiving updates. Releases are published to the
|
||||
> public [`OwnCord-releases`](https://github.com/J3vb/OwnCord-releases)
|
||||
> repository, including a full source snapshot with every release.
|
||||
|
||||
### Phase B — Acceleration
|
||||
|
||||
@@ -29,8 +35,8 @@ behavioural changes operators must know about.
|
||||
`VoiceService.JoinChannel`, `InviteService.CreateInvite`,
|
||||
`ModerationService.BanUser`, `BlockService.BlockUser`,
|
||||
`UserService.UpdateProfile`. The real OTel SDK is gated behind
|
||||
`-tags otel` and is currently a placeholder; wiring the upstream
|
||||
modules is tracked in `PHASE_BC_LOCAL_TODO.md`.
|
||||
`-tags otel` and is currently a placeholder; completing it is
|
||||
deferred until after the beta reset.
|
||||
- **Solid.js proof of concept (Step 6).** Two leaf components migrated
|
||||
(`Badge`, `ChannelListItem`), Vite + JSX configured, store→signal
|
||||
adapter landed. The remaining vanilla components remain in place;
|
||||
@@ -93,16 +99,11 @@ behavioural changes operators must know about.
|
||||
the existing IP restriction.** A previous prerelease shipped with only
|
||||
the IP gate; that has been corrected.
|
||||
|
||||
### Known follow-up work (local toolchain required)
|
||||
### Deferred work
|
||||
|
||||
See `PHASE_BC_LOCAL_TODO.md` for the full list. Highlights:
|
||||
|
||||
- Real OpenTelemetry SDK wiring (needs `go get` of the upstream modules)
|
||||
- Real Wazero runtime construction (needs `go get github.com/tetratelabs/wazero`)
|
||||
- Postgres backend implementation (needs `make sqlc-generate`)
|
||||
- Tinygo `.wasm` build of the example hello plugin
|
||||
- Migration of the remaining vanilla TypeScript components to Solid.js
|
||||
- Slash-command dispatcher in the WS layer (design TBD)
|
||||
|
||||
These items each need a real developer machine with network access; no
|
||||
in-sandbox pass can land them.
|
||||
The project is under a feature freeze until the beta reset completes.
|
||||
Explicitly deferred (not abandoned unless noted): real OpenTelemetry SDK
|
||||
wiring, the Postgres backend (scaffolding removed pending real demand),
|
||||
the slash-command dispatcher (`docs/plans/slash-commands.md`), and the
|
||||
Solid.js migration (abandoned — the experiment is being removed in favor
|
||||
of the established vanilla component pattern).
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported versions
|
||||
|
||||
OwnCord is in alpha. Only the **latest release** receives security fixes.
|
||||
There are no backports.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | --------- |
|
||||
| Latest release (see [OwnCord-releases](https://github.com/J3vb/OwnCord-releases/releases)) | Yes |
|
||||
| Anything older | No |
|
||||
|
||||
## Reporting a vulnerability
|
||||
|
||||
**Do not open a public issue for security bugs.**
|
||||
|
||||
Report vulnerabilities privately via GitHub Security Advisories on the
|
||||
[OwnCord-releases](https://github.com/J3vb/OwnCord-releases/security/advisories/new)
|
||||
repository ("Report a vulnerability"). This channel works even while the
|
||||
source repository is private.
|
||||
|
||||
Please include:
|
||||
|
||||
- Affected component (server, desktop client, admin panel, plugin host)
|
||||
- Reproduction steps or a proof of concept
|
||||
- The release version (or source snapshot) you tested against
|
||||
|
||||
You will get an initial response within 7 days. Coordinated disclosure is
|
||||
appreciated; fixes ship in the next release with credit unless you prefer
|
||||
otherwise.
|
||||
|
||||
## Hardening documentation
|
||||
|
||||
Operator-facing hardening notes live in [docs/security.md](docs/security.md).
|
||||
@@ -5,6 +5,29 @@
|
||||
|
||||
---
|
||||
|
||||
## Finding closure status (maintained; last updated 2026-07-18)
|
||||
|
||||
Every CRITICAL/HIGH below must end with a closing commit link or an explicit
|
||||
mitigation before the beta gate. Standing rule: any plugin CRITICAL still
|
||||
OPEN at the beta gate → plugins ship default-disabled (they already default
|
||||
to `plugins.enabled: false`).
|
||||
|
||||
| # | Sev | Finding | Status |
|
||||
|---|-----|---------|--------|
|
||||
| 1 | CRITICAL | Plugin `invokeCommand` has no timeout | IN PROGRESS — CPU budget added on `fix/security-hardening-review`; regression fix (module bricking, W1-1) required before merge |
|
||||
| 2 | CRITICAL | Plugin storage has no per-plugin key isolation | OPEN — verify/close in P3 |
|
||||
| 3 | CRITICAL | Plugin per-command ACL missing (auto-registration) | OPEN — verify/close in P3 |
|
||||
| 4 | CRITICAL | No rate limit on event delivery to plugins | OPEN — verify/close in P3 |
|
||||
| 5 | CRITICAL | Plugin HTTP capability allows data exfiltration to allowlisted hosts | OPEN — partially mitigated by SSRF hardening + allowlist; document residual risk in P3 |
|
||||
| 6 | HIGH | `Server/store/` untested | SUPERSEDED — `store/` package is being removed in P4 (single data layer); tests move to in-memory SQLite |
|
||||
| 7 | HIGH | Client `src/lib`/`src/stores` <10% unit coverage | CLOSED since audit — large vitest suite exists (113 files); suite health tracked in P2 |
|
||||
| 8 | HIGH | Unpinned critical npm packages | OPEN — review in P2 |
|
||||
| 9 | MEDIUM | auth_handler bypasses service layer | OPEN — P4 consolidation candidate |
|
||||
| 10 | MEDIUM | Audit-trail write failures silently ignored | OPEN — cheap fix, fold into P1 |
|
||||
| 11 | MEDIUM | E2E not in CI / no .nvmrc | IN PROGRESS — nightly non-blocking e2e job planned in P2 |
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
1. [Architecture](#1-architecture)
|
||||
2. [Code Quality](#2-code-quality)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
**Status:** design only, not implemented
|
||||
**Owner:** TBD
|
||||
**Tracks:** PHASE_D_PARITY_TODO.md item #1
|
||||
**Tracks:** deferred feature backlog (post-beta; see CHANGELOG "Deferred work")
|
||||
**Estimated effort:** 1–2 weeks of focused work
|
||||
|
||||
## Why
|
||||
|
||||
Reference in New Issue
Block a user