Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{js,json,yml,yaml}]
indent_style = space
indent_size = 2

[*.sh]
indent_style = space
indent_size = 4
80 changes: 80 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Changelog

All notable DeckDoc changes are recorded here. The project follows
[Semantic Versioning](https://semver.org/); dates use `YYYY-MM-DD`.

## [Unreleased]

No unreleased changes.

## [3.3.0] - 2026-07-21

### Added

- DeckMD's six-category guided entry point with 12 nested primary symptoms.
- Twenty-seven explicit contradiction rules that remove incompatible diagnostic paths.
- A grouped, searchable **Browse all checks** fallback covering all 128 diagnostic facts.
- Keyboard, pointer, mobile, URL-state, and no-match interaction validation for DeckMD.
- A local DeckMD favicon with no external runtime dependency.

### Changed

- DeckMD now presents one focused follow-up group at a time and initially ranks only the three
strongest matching branches.
- README and Pages copy now describe DeckDoc as a full diagnostic platform rather than a black-screen
utility.

## [3.2.0] - 2026-07-21

### Added

- Expanded full-system coverage to 17 read-only diagnostic modules and two guarded remediations.
- Opt-in, resource-limited continuous incident probe with bounded private captures.
- Dock, USB-C, Power Delivery, Alt Mode, Ethernet, and external-display evidence collection.
- Read-only DeckDoc Rescue collector and unsigned ArchISO alpha builder.
- Root-owned, exact-command privileged diagnostic authorization prototype.
- Research-backed diagnostic wiki, issue index, and hardware-failure decision guide.
- Initial private, static DeckMD symptom checker and GitHub Pages deployment.

### Changed

- Findings distinguish current-boot evidence from retained history and inaccessible sources.
- Steam, memory, thermal, Gamescope, display, and crash signatures gained tighter evidence boundaries.

## [3.1.0] - 2026-07-21

### Added

- LCD physical-blackout diagnosis and reversible Gamescope forced-composition testing.
- Optional persisted display-stability policy with backup, verification, and rollback.
- LCD blackout investigation notes and user-facing recovery documentation.

## [3.0.0] - 2026-06-25

### Added

- Diagnosis-first remediation lifecycle: `PRE_CHECK -> BACKUP -> EXECUTE -> VERIFY -> REPORT`.
- Guarded SOF audio reload for a current-boot Vangogh DSP failure signature.
- Display blackout diagnostic module and explicit `--fix` mode.

## [2.0.0] - 2026-06-25

### Added

- Nine software and operating-system diagnostic modules covering audio, crashes, Wi-Fi, Gamescope,
memory, Steam, microSD, suspend/resume, and GPU page faults.
- Mock regression coverage for the expanded diagnostic set.

## [1.0.1] - 2026-06-25

### Added

- Initial Steam Deck hardware diagnostic scaffold for GPU, battery, thermals, NVMe, and filesystems.

[Unreleased]: https://github.com/deucebucket/deckdoc/compare/v3.3.0...HEAD
[3.3.0]: https://github.com/deucebucket/deckdoc/releases/tag/v3.3.0
[3.2.0]: https://github.com/deucebucket/deckdoc/commit/6d31a545cdb947892d9e6179fb8188d5d26cff88
[3.1.0]: https://github.com/deucebucket/deckdoc/pull/14
[3.0.0]: https://github.com/deucebucket/deckdoc/pull/12
[2.0.0]: https://github.com/deucebucket/deckdoc/pull/10
[1.0.1]: https://github.com/deucebucket/deckdoc/commit/0e8eb36
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 deucebucket

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# DeckDoc

**Current source release: v3.3.0** · [Changelog](CHANGELOG.md) ·
[Roadmap](ROADMAP.md) · [DeckMD](https://deucebucket.github.io/deckdoc/) ·
[Diagnostic wiki](https://github.com/deucebucket/deckdoc/wiki)

DeckDoc is a full-system Steam Deck diagnostic and incident-response platform. It helps answer the
larger question behind almost every Deck failure: **what actually failed, what evidence supports that
conclusion, and what is the safest next action?**
Expand Down Expand Up @@ -197,6 +201,8 @@ privileged/ one-time approved, exact-command diagnostic broker
config/ optional Gamescope policy template
docs/wiki/ GitHub-wiki-ready diagnostic center
tests/test_runner.sh mocked behavior and safety regression checks
VERSION canonical source release version
CHANGELOG.md release history and current unreleased state
remediation_backups/ created only when a remediation records state
logs/ generated reports; ignored by Git
```
Expand Down Expand Up @@ -241,4 +247,4 @@ and production hardening/signing of the probe and Rescue image.

## License

MIT
[MIT](LICENSE)
8 changes: 4 additions & 4 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# DeckDoc v3.2 roadmap — full-system diagnostics and incident response
# DeckDoc v3.3.0 roadmap — full-system diagnostics and incident response

DeckDoc's product is evidence, correlation, and safe decision support. It should help a user separate
application/configuration faults, SteamOS/driver faults, accessory or dock faults, and strong hardware
Expand All @@ -13,7 +13,7 @@ narrow and is not the measure of project coverage.
| Incident probe | Opt-in bounded event capture prototype; private, resource-limited, no remediation |
| Dock analysis | USB/Type-C/PD/Alt Mode/display/Ethernet evidence and current-boot path-error correlation |
| DeckDoc Rescue | Read-only collector plus unsigned ArchISO alpha builder for outside-OS comparison |
| DeckMD | Static local-only symptom checker with progressive questions and ranked diagnostic branches |
| DeckMD | Public, static, local-only checker with six guided categories, contradiction pruning, 128 facts, and 15 ranked branches |
| Diagnostic wiki | Symptom routes, evidence interpretation, safe contrasts, recovery, and hardware decisions |
| Privileged collection | One-time approved, exact-command, root-owned diagnostic broker prototype |
| Remediation | Two guarded signature-specific paths: SOF reload and Gamescope forced-composition test |
Expand Down Expand Up @@ -45,8 +45,8 @@ redacted bundles without automatic upload.
third-party paths and generate direct-vs-dock differential summaries.
- [#19 Privileged authorization](https://github.com/deucebucket/deckdoc/issues/19): adversarially
review the allowlist, snapshot integrity, output path, environment, and revocation flow.
- [#23 DeckMD](https://github.com/deucebucket/deckdoc/issues/23): deploy Pages, share a versioned
vocabulary, expand rules, and complete keyboard/touch/responsive/accessibility validation.
- [#23 DeckMD](https://github.com/deucebucket/deckdoc/issues/23): keep the launched Pages app aligned
with CLI/wiki vocabulary, validate on physical Deck hardware, and complete a formal accessibility audit.

## P2 — close broad subsystem gaps

Expand Down
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.3.0
8 changes: 7 additions & 1 deletion deckdoc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ fi

DECKDOC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export DECKDOC_DIR
if [ -r "${DECKDOC_DIR}/VERSION" ]; then
DECKDOC_VERSION=$(<"${DECKDOC_DIR}/VERSION")
else
DECKDOC_VERSION="unknown"
fi
readonly DECKDOC_VERSION
MODULES_DIR="${DECKDOC_DIR}/modules"
LOG_DIR="${DECKDOC_LOG_DIR:-${DECKDOC_DIR}/logs}"
REPORT_FILE="${LOG_DIR}/deckdoc_master_report_$(date +%s).log"
Expand All @@ -44,7 +50,7 @@ panic_sync() {
trap panic_sync EXIT HUP INT QUIT TERM

echo "========================================" > "${REPORT_FILE}"
echo "DeckDoc v3.2.0 - Diagnostics + Safe Remediation" >> "${REPORT_FILE}"
echo "DeckDoc v${DECKDOC_VERSION} - Diagnostics + Safe Remediation" >> "${REPORT_FILE}"
echo "Timestamp: $(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> "${REPORT_FILE}"
echo "Reported symptom: display-black=${DISPLAY_BLACK_REPORTED}" >> "${REPORT_FILE}"
echo "========================================" >> "${REPORT_FILE}"
Expand Down
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ <h3 id="constellation-title">Current layer weight</h3>
</main>

<footer>
<div><strong>DeckMD</strong><p>An evidence-first interface for the open DeckDoc toolkit.</p></div>
<div><strong>DeckMD</strong><p>An evidence-first interface for the open DeckDoc v3.3.0 toolkit.</p></div>
<p>This is not medical advice, despite the name. It is also not Valve, Steam Support, a warranty
verdict, or electrical test equipment.</p>
<div class="footer-links"><a href="https://github.com/deucebucket/deckdoc/wiki">Wiki</a><a href="https://github.com/deucebucket/deckdoc/wiki/Recovery-and-Escalation">Escalation</a><a href="https://github.com/deucebucket/deckdoc/issues">Report a gap</a></div>
Expand Down
2 changes: 1 addition & 1 deletion privileged/install-authorized.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ readonly INSTALL_ROOT="/var/lib/deckdoc-authorized"
readonly APP_DIR="${INSTALL_ROOT}/app"
readonly BIN_DIR="${INSTALL_ROOT}/bin"
readonly BROKER="${BIN_DIR}/deckdoc-authorized"
readonly VERSION="3.2.0"
readonly VERSION="$(<"${SOURCE_DIR}/VERSION")"

require_root() {
if [ "$(id -u)" -ne 0 ]; then
Expand Down
3 changes: 2 additions & 1 deletion setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
set -euo pipefail

DECKDOC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly DECKDOC_VERSION="$(<"${DECKDOC_DIR}/VERSION")"
LOG_DIR="${DECKDOC_DIR}/logs"

mkdir -p "${LOG_DIR}"
Expand All @@ -12,5 +13,5 @@ chmod 755 "${DECKDOC_DIR}"/probe/*.sh
chmod 755 "${DECKDOC_DIR}"/bootprobe/*.sh
chmod 755 "${DECKDOC_DIR}"/privileged/*

echo "[*] DeckDoc v3.2.0 environment scaffolded successfully at ${DECKDOC_DIR}"
echo "[*] DeckDoc v${DECKDOC_VERSION} environment scaffolded successfully at ${DECKDOC_DIR}"
sync
24 changes: 22 additions & 2 deletions tests/test_runner.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
set -euo pipefail

DECKDOC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
readonly DECKDOC_VERSION="$(<"${DECKDOC_DIR}/VERSION")"
TEST_ENV="$(mktemp -d /tmp/deckdoc-test.XXXXXX)"
cleanup() { rm -rf -- "${TEST_ENV}"; }
trap cleanup EXIT

echo "========================================="
echo "DeckDoc v3.2.0 — Test Runner"
echo "DeckDoc v${DECKDOC_VERSION} — Test Runner"
echo "========================================="

# === Test 1: Mock sysfs structure ===
Expand Down Expand Up @@ -603,7 +604,26 @@ else
exit 1
fi

# === Test 28: Release metadata remains synchronized ===
echo ""
echo "--- Test 28: Release metadata consistency ---"
if [[ "$DECKDOC_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] && \
grep -Fq "DeckDoc v\${DECKDOC_VERSION}" "${DECKDOC_DIR}/deckdoc.sh" && \
grep -Fq "DeckDoc v\${DECKDOC_VERSION}" "${DECKDOC_DIR}/setup.sh" && \
grep -Fq 'readonly VERSION="$(<"${SOURCE_DIR}/VERSION")"' \
"${DECKDOC_DIR}/privileged/install-authorized.sh" && \
grep -Fq "## [${DECKDOC_VERSION}]" "${DECKDOC_DIR}/CHANGELOG.md" && \
grep -Fq "v${DECKDOC_VERSION}" "${DECKDOC_DIR}/README.md" && \
grep -Fq "DeckDoc v${DECKDOC_VERSION}" "${DECKDOC_DIR}/ROADMAP.md" && \
grep -Fq "DeckDoc v${DECKDOC_VERSION}" "${DECKDOC_DIR}/docs/index.html" && \
[ -f "${DECKDOC_DIR}/LICENSE" ]; then
echo " PASS: VERSION, runtime output, release docs, site, and license agree on v${DECKDOC_VERSION}."
else
echo " FAIL: Release metadata is missing or inconsistent with VERSION=${DECKDOC_VERSION}."
exit 1
fi

echo ""
echo "========================================="
echo "All scaffold tests completed successfully."
echo "All DeckDoc tests completed successfully."
echo "========================================="
6 changes: 5 additions & 1 deletion tests/validate_links.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
const fs = require("fs");
const path = require("path");
const root = path.resolve(__dirname, "..");
const markdown = [path.join(root, "README.md"), path.join(root, "ROADMAP.md")];
const markdown = [
path.join(root, "README.md"),
path.join(root, "ROADMAP.md"),
path.join(root, "CHANGELOG.md"),
];

function walk(directory) {
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
Expand Down
Loading