Skip to content

docs: Add lightweight contributor onboarding documentation#894

Merged
daveallie merged 8 commits intocrosspoint-reader:masterfrom
bilalix:docs-for-beginners
Feb 22, 2026
Merged

docs: Add lightweight contributor onboarding documentation#894
daveallie merged 8 commits intocrosspoint-reader:masterfrom
bilalix:docs-for-beginners

Conversation

@bilalix
Copy link
Contributor

@bilalix bilalix commented Feb 15, 2026

Summary

This PR introduces a lightweight contributor onboarding docs section under docs/contributing/ and improves local formatting ergonomics for first-time contributors.

The goal is to make CrossPoint easier to contribute to for software developers who are new to embedded systems (like me), while keeping onboarding modular and aligned with existing project docs.

What changed

  • Added contributor docs hub: docs/contributing/README.md
  • Added focused onboarding pages:
    • docs/contributing/getting-started.md
    • docs/contributing/architecture.md
    • docs/contributing/development-workflow.md
    • docs/contributing/testing-debugging.md
  • Linked contributor docs from README.md for discoverability
  • Expanded architecture documentation with Mermaid diagrams
  • Improved bin/clang-format-fix:
    • prefers clang-format-21 when available
    • validates formatter version and fails fast with a clear message if too old
    • handles missing positional arg safely
  • Updated docs to explain common clang-format setup/version issues and install paths (including fallback steps when clang-format-21 is unavailable in default apt sources)

Why

  • There was no dedicated contributor onboarding path; first-time contributors had to infer workflow from multiple files.
  • New contributors (especially from non-embedded backgrounds) need a clear mental model of architecture, runtime flow, and debugging process.
  • Local formatting setup caused avoidable friction due to clang-format version mismatch (.clang-format expects newer keys used in CI).
  • The updates make contribution setup more predictable, reduce onboarding confusion, and align local checks with CI expectations.

Additional context

  • No firmware behavior/runtime logic was changed; this PR focuses on contributor experience and tooling clarity.

AI Usage

Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then manually reviewed, tested, and refined the code to ensure it works correctly. please feel free to point out any discrepancies or areas for improvement.

@bilalix bilalix changed the title Add lightweight contributor onboarding documentations Add lightweight contributor onboarding documentation Feb 15, 2026
@bilalix bilalix changed the title Add lightweight contributor onboarding documentation docs: Add lightweight contributor onboarding documentation Feb 15, 2026
@martinbrook
Copy link
Contributor

Related discussions at #890

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 16, 2026

📝 Walkthrough

Walkthrough

Adds a new contributor documentation set (getting started, architecture, workflow, testing), minor README and .gitignore edits, and updates bin/clang-format-fix to enforce Bash safety, prefer clang-format-21 with fallback, and require clang-format major version >= 21.

Changes

Cohort / File(s) Summary
Build script
bin/clang-format-fix
Added set -euo pipefail, improved argument handling, prefer clang-format-21 falling back to clang-format, introduced CLANG_FORMAT_BIN, check/enforce clang-format major version >= 21, and improved error messages.
Repository metadata
/.gitignore, README.md
Added /.venv to .gitignore; inserted links/references to the new contributing docs in README.md.
Contributor documentation
docs/contributing/...
docs/contributing/README.md, docs/contributing/getting-started.md, docs/contributing/architecture.md, docs/contributing/development-workflow.md, docs/contributing/testing-debugging.md
Added a contributor docs set: Getting Started, Architecture Overview, Development Workflow, Testing & Debugging, and an index README. Extensive new guidance and onboarding content.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding contributor onboarding documentation under docs/contributing/.
Description check ✅ Passed The description comprehensively relates to the changeset, detailing the new documentation files, improvements to clang-format-fix, and rationale for the changes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
Verify each finding against the current code and only fix it if needed.


In `@bin/clang-format-fix`:
- Around line 17-35: The preflight guard mistakenly only checks for
"clang-format" and will exit early in environments that have only
"clang-format-21"; update the initial binary-detection block so it accepts
either binary and sets CLANG_FORMAT_BIN accordingly (i.e., check for
clang-format-21 first, then clang-format, or test both in one conditional) so
the subsequent CLANG_FORMAT_VERSION_RAW and CLANG_FORMAT_MAJOR logic can run;
modify the existing if/elif/else that sets CLANG_FORMAT_BIN to include
"clang-format-21" as a valid hit and only exit with the error message if neither
binary is found.

In `@docs/contributing/architecture.md`:
- Around line 124-125: Change the phrase "layout related settings" to the
hyphenated compound adjective "layout-related settings" so the line that
currently reads 'rendering favors reusing precomputed layout data to keep page
turns responsive on constrained hardware' uses the corrected compound modifier
by replacing the unhyphenated instance "layout related settings" with
"layout-related settings".
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97c3314 and 35ac25f.

📒 Files selected for processing (8)
  • .gitignore
  • README.md
  • bin/clang-format-fix
  • docs/contributing/README.md
  • docs/contributing/architecture.md
  • docs/contributing/development-workflow.md
  • docs/contributing/getting-started.md
  • docs/contributing/testing-debugging.md
🧰 Additional context used
🪛 LanguageTool
docs/contributing/architecture.md

[grammar] ~124-~124: Use a hyphen to join words.
Context: ...sting parameters such as font and layout related settings - rendering favors reus...

(QB_NEW_EN_HYPHEN)


[style] ~191-~191: To elevate your writing, try using an alternative expression here.
Context: ...hing choices - main loop responsiveness matters for input, power handling, and watchdog...

(MATTERS_RELEVANT)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: cppcheck
  • GitHub Check: build
🔇 Additional comments (6)
.gitignore (1)

13-13: LGTM — .venv ignore is helpful.

Keeps local Python virtual environments out of version control.

README.md (1)

155-158: Nice addition — improves contributor discoverability.

Clear entry point for new contributors.

docs/contributing/development-workflow.md (1)

1-43: Solid, concise workflow guidance.

Clear steps and good cross-links for contributors.

docs/contributing/README.md (1)

1-11: LGTM — clear contributor hub.

Navigation links are straightforward.

docs/contributing/testing-debugging.md (1)

1-48: LGTM — useful testing/debugging checklist.

Nice separation of local checks, flashing, and bug report guidance.

docs/contributing/getting-started.md (1)

1-80: LGTM — comprehensive and easy to follow.

Great end-to-end onboarding flow for first-time contributors.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
bin/clang-format-fix (1)

40-44: Consider null-delimited pipeline for filenames with spaces.

The current pipeline splits on newlines/whitespace, which could break on filenames containing spaces. While unlikely in C/C++ projects, using -z and -0 would make this more robust.

♻️ Proposed refactor for null-delimited safety
-git ls-files  --exclude-standard ${GIT_LS_FILES_FLAGS} \
+git ls-files -z --exclude-standard ${GIT_LS_FILES_FLAGS} \
+    | grep -zE '\.(c|cpp|h|hpp)$' \
+    | grep -zv -E '^lib/EpdFont/builtinFonts/' \
+    | grep -zv -E '^lib/Epub/Epub/hyphenation/generated/' \
+    | xargs -0 -r "${CLANG_FORMAT_BIN}" -style=file -i
-    | grep -E '\.(c|cpp|h|hpp)$' \
-    | grep -v -E '^lib/EpdFont/builtinFonts/' \
-    | grep -v -E '^lib/Epub/Epub/hyphenation/generated/' \
-    | xargs -r "${CLANG_FORMAT_BIN}" -style=file -i
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/clang-format-fix` around lines 40 - 44, The pipeline that runs
clang-format should be made null-delimited to handle filenames with spaces:
change the commands using git ls-files, grep and xargs so git ls-files emits
NULs (git ls-files -z), each grep uses -z to operate on NUL-delimited input and
the final xargs invocation uses -0 (and keep -r) when invoking
"${CLANG_FORMAT_BIN}" -style=file -i; update the sequence that currently
references git ls-files, grep -E / grep -v -E and xargs to use -z/-0
respectively so filenames with spaces are preserved.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 35ac25f and df2eb84.

📒 Files selected for processing (2)
  • bin/clang-format-fix
  • docs/contributing/architecture.md
🧰 Additional context used
🪛 LanguageTool
docs/contributing/architecture.md

[style] ~191-~191: To elevate your writing, try using an alternative expression here.
Context: ...hing choices - main loop responsiveness matters for input, power handling, and watchdog...

(MATTERS_RELEVANT)

🔇 Additional comments (16)
bin/clang-format-fix (3)

3-12: LGTM!

The dual-binary detection logic correctly prefers clang-format-21 and falls back to clang-format, addressing the previous review feedback. The error message provides clear guidance for installation.


16-19: LGTM!

The ${1:-} pattern correctly handles the optional argument safely under set -u, and the flag logic is clear.


24-29: LGTM!

The version validation logic correctly enforces the minimum version requirement and provides clear, actionable error messages when the check fails.

docs/contributing/architecture.md (13)

1-6: LGTM! Clear introduction.

The opening provides a concise overview of the project's purpose, target hardware, and architectural approach.


7-22: LGTM! System diagram is clear.

The Mermaid diagram effectively visualizes the system layers from hardware to application components.


24-46: LGTM! Runtime lifecycle is well documented.

The flowchart clearly illustrates the boot sequence, main loop, and sleep behavior.


47-63: LGTM! Activity model is well explained.

The section clearly describes the Activity pattern and organizes the different activity groups.


64-86: LGTM! Reader pipeline is clear.

The flowchart and caching explanation effectively communicate the reader architecture and design rationale.


87-127: LGTM! Detailed call graph with helpful notes.

The flowchart provides excellent detail on the EPUB reading path, and the notes explain important caching and persistence considerations.


128-148: LGTM! State management is well documented.

The section clearly explains the singleton pattern and persistence strategy with a helpful directory structure example. The reference to docs/file-formats.md provides a useful pointer for implementation details.


150-166: LGTM! Networking architecture is concise.

The section effectively summarizes the web server modes and behavior. The reference to the endpoint documentation is helpful.


168-175: LGTM! Important contributor guidance.

This section provides essential information about generated files that contributors should not edit manually.


177-186: LGTM! Helpful directory reference.

The section provides a useful quick reference for navigating the codebase structure.


187-192: LGTM! Essential design context.

This section effectively explains the embedded constraints that inform architectural decisions.


194-199: LGTM! Good contributor guidance.

Directing contributors to scope and governance documentation helps maintain project focus.


148-148: No action needed—all referenced documentation files exist.

The cross-references to docs/file-formats.md, docs/webserver-endpoints.md, SCOPE.md, and GOVERNANCE.md are valid and present in the repository.

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bin/clang-format-fix`:
- Line 14: The strict shell flags set by set -euo pipefail cause the pipeline
that extracts the version (the grep -oE '[0-9]+' pipeline) to abort the script
if grep returns non-zero, skipping the intended graceful error handling; update
the script so the version extraction cannot trigger an immediate exit—either
move the extraction out from under strict mode or temporarily disable
exit-on-failure around the pipeline (e.g., run the grep pipeline with a safe
fallback or append a || true) and then check the result explicitly before
invoking the existing error handling logic referenced around the version
extraction and the graceful error path.

---

Nitpick comments:
In `@bin/clang-format-fix`:
- Around line 40-44: The pipeline that runs clang-format should be made
null-delimited to handle filenames with spaces: change the commands using git
ls-files, grep and xargs so git ls-files emits NULs (git ls-files -z), each grep
uses -z to operate on NUL-delimited input and the final xargs invocation uses -0
(and keep -r) when invoking "${CLANG_FORMAT_BIN}" -style=file -i; update the
sequence that currently references git ls-files, grep -E / grep -v -E and xargs
to use -z/-0 respectively so filenames with spaces are preserved.

exit 1
fi

set -euo pipefail
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

set -euo pipefail may cause silent failure on unusual version strings.

With pipefail enabled, if grep -oE '[0-9]+' on line 22 finds no match (returns non-zero), the script exits immediately before reaching the graceful error handling at line 24. Consider suppressing the pipeline exit status or moving the version extraction before strict mode.

🛠️ Proposed fix to handle grep failure gracefully
-CLANG_FORMAT_MAJOR="$(printf '%s\n' "${CLANG_FORMAT_VERSION_RAW}" | grep -oE '[0-9]+' | head -n1)"
+CLANG_FORMAT_MAJOR="$(printf '%s\n' "${CLANG_FORMAT_VERSION_RAW}" | grep -oE '[0-9]+' | head -n1 || true)"

Also applies to: 21-22

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/clang-format-fix` at line 14, The strict shell flags set by set -euo
pipefail cause the pipeline that extracts the version (the grep -oE '[0-9]+'
pipeline) to abort the script if grep returns non-zero, skipping the intended
graceful error handling; update the script so the version extraction cannot
trigger an immediate exit—either move the extraction out from under strict mode
or temporarily disable exit-on-failure around the pipeline (e.g., run the grep
pipeline with a safe fallback or append a || true) and then check the result
explicitly before invoking the existing error handling logic referenced around
the version extraction and the graceful error path.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between df2eb84 and 740f131.

📒 Files selected for processing (2)
  • README.md
  • bin/clang-format-fix
🚧 Files skipped from review as they are similar to previous changes (1)
  • README.md
🔇 Additional comments (2)
bin/clang-format-fix (2)

3-12: LGTM!

The binary selection logic correctly prefers clang-format-21 and falls back to clang-format, addressing the earlier concern about environments with only clang-format-21 installed. The error message is also clear and helpful.


40-45: LGTM!

The formatting pipeline correctly uses ${CLANG_FORMAT_BIN} and the file filtering logic is sound. The exclusions for generated directories are well-documented in the comments above.

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@bin/clang-format-fix`:
- Around line 21-22: The pipeline assignment to CLANG_FORMAT_MAJOR can fail
under set -euo pipefail if grep finds no digits; modify the command that
computes CLANG_FORMAT_MAJOR (currently using CLANG_FORMAT_VERSION_RAW and grep
-oE '[0-9]+') to tolerate no-match by appending a fallback (e.g., make the grep
step non-fatal with "|| true" or use a safe extraction method) so the script
does not exit early, then explicitly check CLANG_FORMAT_MAJOR for emptiness and
emit the existing helpful error message if it is unset; update the code around
CLANG_FORMAT_VERSION_RAW and CLANG_FORMAT_MAJOR to implement this non-fatal grep
and the subsequent empty-value check.

@daveallie daveallie merged commit f62529a into crosspoint-reader:master Feb 22, 2026
6 checks passed
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 22, 2026
…t-reader#894)

### Summary

This PR introduces a lightweight contributor onboarding docs section
under `docs/contributing/` and improves local formatting ergonomics for
first-time contributors.

The goal is to make CrossPoint easier to contribute to for software
developers who are new to embedded systems (like me), while keeping
onboarding modular and aligned with existing project docs.

### What changed

- Added contributor docs hub: `docs/contributing/README.md`
- Added focused onboarding pages:
  - `docs/contributing/getting-started.md`
  - `docs/contributing/architecture.md`
  - `docs/contributing/development-workflow.md`
  - `docs/contributing/testing-debugging.md`
- Linked contributor docs from `README.md` for discoverability
- Expanded architecture documentation with Mermaid diagrams
- Improved `bin/clang-format-fix`:
  - prefers `clang-format-21` when available
- validates formatter version and fails fast with a clear message if too
old
  - handles missing positional arg safely
- Updated docs to explain common `clang-format` setup/version issues and
install paths (including fallback steps when `clang-format-21` is
unavailable in default apt sources)

### Why

- There was no dedicated contributor onboarding path; first-time
contributors had to infer workflow from multiple files.
- New contributors (especially from non-embedded backgrounds) need a
clear mental model of architecture, runtime flow, and debugging process.
- Local formatting setup caused avoidable friction due to clang-format
version mismatch (`.clang-format` expects newer keys used in CI).
- The updates make contribution setup more predictable, reduce
onboarding confusion, and align local checks with CI expectations.

### Additional context

- No firmware behavior/runtime logic was changed; this PR focuses on
contributor experience and tooling clarity.

---

### AI Usage

> Did you use AI tools to help write this code?

Yes, I used AI tools to assist with generating the documentation. I then
manually reviewed, tested, and refined the code to ensure it works
correctly. please feel free to point out any discrepancies or areas for
improvement.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants