Initial commit: RGB LED Strip Controller v0.3.0

- WPF + WinRT BLE controller for ELK-BLEDOM compatible LED strips

- Multi-device control, effects, grayscale and temperature modes

- Velopack updates via Gitea Releases, Gitea Actions CI
This commit is contained in:
fristy committed 2026-09-04 23:31:11 +03:00
commit c9e643d617
40 files changed
+5411

No files matched your search

+43
View File
@@ -0,0 +1,43 @@
# v1 to v2 Migration Playbook
This playbook migrates the old 6-file memory bank to the v2 layered model.
## Mapping Table
| v1 file | v2 destination |
| --- | --- |
| `projectbrief.md` | `10_scope.md` |
| `productContext.md` | `11_product.md` |
| `systemPatterns.md` | `12_architecture.md` |
| `techContext.md` | `13_tech.md` |
| `activeContext.md` | `20_now.md` |
| `progress.md` | `21_backlog.md` + `logs/tasks/...` + `00_project_snapshot.md` |
## Migration Steps
1. Create the v2 tree from `templates/`.
2. Copy current-truth statements from v1 files into mapped v2 core files.
3. Remove historical narrative from core content while migrating.
4. Extract major decisions into ADRs (`decisions/ADR-*.md`).
5. Extract execution history into task logs (`logs/tasks/YYYY/MM/*.md`).
6. Build `00_project_snapshot.md` from current state, top risks, and top priorities.
7. Build `21_backlog.md` from remaining actionable items only.
8. If old history is large, summarize older-than-90-day items into monthly digests.
9. Run consistency checks from `OPERATIONS.md`.
## Conversion Rules
- Keep one source of truth per concept.
- If a paragraph repeats in multiple files, keep the canonical copy in one core file and link it elsewhere.
- Core files must answer "what is true now", not "what happened over time".
- Place justifications and tradeoffs in ADRs, not in core files.
## Suggested First ADRs
- `ADR-0001-memory-bank-v2-adoption.md`: why v2 was adopted.
- `ADR-0002-layered-read-protocol.md`: why layered reading is required.
- `ADR-0003-core-no-changelog-rule.md`: why history is separated from core files.
## Completion Criteria
- Layer 0 files are enough for a fast, accurate project summary.
- All backlog items are actionable and non-duplicated.
- Old historical detail is linked through task logs and digests.
- No core file breaches hard line budgets.
+48
View File
@@ -0,0 +1,48 @@
# Memory Bank v2 Operations
## Command: `update memory bank`
Use this when significant changes happen or context gets stale.
### Procedure
1. Read Layer 0 (`00_project_snapshot.md`, `20_now.md`, `21_backlog.md`).
2. Read additional Layer 1 and Layer 2 files that are relevant to touched work.
3. Refresh core files to current truth.
4. Write or update ADRs for durable decisions.
5. Write a task log for significant implementation steps.
6. Validate:
- All referenced ADR and task IDs exist.
- Core files do not contain changelog-style history.
- Budgets from `SCHEMA.md` are respected.
7. Update `Last Updated` fields in touched files.
### Expected Result
- Layer 0 gives an accurate project state in minutes.
- Decision and execution history is traceable via IDs.
## Command: `compact memory bank`
Use this manually for maintenance.
### Triggers
- Any file exceeds hard budget.
- Backlog has many stale completed items.
- Task logs older than 90 days are accumulating.
### Procedure
1. Identify oversized core files.
2. Remove historical narrative from core files.
3. Ensure old details live in ADR/task logs.
4. For each month older than 90 days, create or refresh `logs/digests/YYYY-MM.md`.
5. Replace verbose old references in core files with digest links.
6. Re-validate ID/link integrity and budgets.
### Expected Result
- Core remains concise.
- Older history stays discoverable through digests and linked logs.
## Consistency Checklist
- Every backlog item has an ID, status, and owner.
- Every ADR has status (`proposed`, `accepted`, `superseded`) and links.
- `20_now.md` and `21_backlog.md` do not conflict.
- `00_project_snapshot.md` reflects the same priorities as `20_now.md`.
+113
View File
@@ -0,0 +1,113 @@
# Memory Bank v2 Schema
## Required Tree
```text
memory-bank/
00_project_snapshot.md
10_scope.md
11_product.md
12_architecture.md
13_tech.md
20_now.md
21_backlog.md
decisions/
ADR-0001-short-title.md
logs/
tasks/YYYY/MM/TASK-YYYYMMDD-001-short-title.md
digests/YYYY-MM.md
```
## ID and Naming Rules
- ADR ID: `ADR-0001` style, incrementing sequence.
- Task ID: `TASK-YYYYMMDD-###` style, sequence resets daily.
- Backlog ID: `BG-001` style.
- Core file names are fixed and must not be renamed.
- Keep file names in English; content may be Turkish or English.
## Hard Size Budgets
| File | Max lines | Role |
| --- | ---: | --- |
| `00_project_snapshot.md` | 120 | One-page entry point and quick orientation |
| `10_scope.md` | 180 | Scope boundaries and success criteria |
| `11_product.md` | 220 | User/problem/value model |
| `12_architecture.md` | 260 | Architecture map and critical paths |
| `13_tech.md` | 220 | Stack, setup, constraints, runbook basics |
| `20_now.md` | 160 | Current focus, blockers, assumptions |
| `21_backlog.md` | 200 | Prioritized backlog and status |
| `decisions/ADR-*.md` | 180 each | Durable rationale and decision records |
| `logs/tasks/.../*.md` | 250 each | Task execution narrative |
| `logs/digests/YYYY-MM.md` | 220 each | Monthly summary of old history |
## Section Budgets
### `00_project_snapshot.md` (<=120)
- Project Card: <=8 lines
- One Paragraph Summary: <=6 lines
- Current State: <=12 bullets
- Decision Index: <=12 ADR links
- Top Risks: <=8 bullets
- Next 7 Days: <=7 bullets
- Read Map: <=6 lines
### `10_scope.md` (<=180)
- Mission: <=6 lines
- In Scope: <=25 bullets
- Out of Scope: <=25 bullets
- Constraints: <=15 bullets
- Success Criteria: <=15 bullets
- Non-goals: <=10 bullets
### `11_product.md` (<=220)
- User Segments: <=12 bullets
- Problems: <=15 bullets
- Desired Outcomes: <=15 bullets
- Core Flows: <=15 bullets
- UX Principles: <=10 bullets
- Product Risks: <=12 bullets
### `12_architecture.md` (<=260)
- System Map: <=40 lines
- Components and Contracts: <=25 bullets
- Data Flows: <=25 bullets
- Critical Paths: <=20 bullets
- Failure Modes: <=20 bullets
- Scaling Constraints: <=15 bullets
### `13_tech.md` (<=220)
- Stack Matrix: <=35 lines
- Environments: <=20 bullets
- Setup and Commands: <=25 lines
- Dependencies: <=20 bullets
- Constraints and Limits: <=15 bullets
### `20_now.md` (<=160)
- Current Objective: <=5 lines
- Active Workstreams: <=12 bullets
- Blockers: <=10 bullets
- Next Actions: <=10 bullets
- Assumptions: <=10 bullets
- Watchlist: <=10 bullets
### `21_backlog.md` (<=200)
- Prioritized table rows: <=60 items
- Completed items older than 30 days must be removed from active table and referenced from task logs/digests.
## Core File Guardrails
- Core files are current truth only.
- Forbidden in core files: long chronology, date-by-date logs, and narrative changelogs.
- Keep details in ADRs and task logs; keep summaries in core files.
- Prefer references over duplicated prose.
## Over-Limit Policy
When any file exceeds budget:
1. Keep only current truth in the core file.
2. Move historical detail to ADR/task logs.
3. Add references to moved details.
4. Re-run a consistency check (IDs resolve, no stale links).
## 90-Day Retention Policy
- Task logs in the last 90 days are hot history.
- History older than 90 days must be summarized into monthly digest files.
- Compaction is manual and triggered by `compact memory bank`.
+21
View File
@@ -0,0 +1,21 @@
# Memory Bank v2 Templates
Use files under `templates/` as copy-ready starters for each new project.
## Template Index
- `templates/00_project_snapshot.md`
- `templates/10_scope.md`
- `templates/11_product.md`
- `templates/12_architecture.md`
- `templates/13_tech.md`
- `templates/20_now.md`
- `templates/21_backlog.md`
- `templates/decisions/ADR-0000-template.md`
- `templates/logs/tasks/YYYY/MM/TASK-YYYYMMDD-001-template.md`
- `templates/logs/digests/YYYY-MM.md`
## Usage Rules
1. Keep section headings stable so tools can parse quickly.
2. Replace placeholders (`<...>`) immediately; avoid leaving TODO placeholders in active projects.
3. Keep IDs stable once created.
4. Keep core files concise and route history to ADR/log templates.
+29
View File
@@ -0,0 +1,29 @@
# Memory Bank v2 Test Checklist
## 1. Startup Test (2-3 minute orientation)
- Read only Layer 0 files.
- Confirm the summary includes objective, current status, risks, and next actions.
- Pass if no Layer 1/2 file is required for a basic project brief.
## 2. Scale Test (200+ task logs)
- Ensure core files remain within hard budgets.
- Confirm old details are reachable through task logs and digests.
- Pass if context load time remains fast and no core file turns into a log.
## 3. Audit Trace Test
- Pick one decision and trace:
1. Core summary mention
2. ADR rationale
3. Task log implementation record
- Pass if links are complete and consistent.
## 4. Anti-duplication Test
- Scan core files for repeated long paragraphs.
- Pass if repeated content is replaced with canonical links.
## 5. Compaction Test
- Run `compact memory bank` procedure.
- Confirm:
- Core files shrink to budget.
- 90+ day history appears in monthly digests.
- Link integrity is preserved.
@@ -0,0 +1,35 @@
# 00 Project Snapshot
Last Updated: YYYY-MM-DD
Project: <name>
Owner: <person-or-team>
Stage: discovery|build|stabilize|maintenance
## One Paragraph Summary
<3-5 sentences that explain what this project does and why it matters.>
## Current State
- <current truth bullet 1>
- <current truth bullet 2>
## Top Facts
- [F01] <fact>
- [F02] <fact>
## Decision Index
- [ADR-0001] <title>
## Top Risks
- <risk and impact>
## Next 7 Days
- <priority 1>
- <priority 2>
## Read Map
- Scope: `10_scope.md`
- Product: `11_product.md`
- Architecture: `12_architecture.md`
- Tech: `13_tech.md`
- Current Operations: `20_now.md`
- Backlog: `21_backlog.md`
+22
View File
@@ -0,0 +1,22 @@
# 10 Scope
Last Updated: YYYY-MM-DD
Owner: <person-or-team>
## Mission
<single paragraph>
## In Scope
- <item>
## Out of Scope
- <item>
## Constraints
- <constraint>
## Success Criteria
- <measurable criterion>
## Non-goals
- <non-goal>
+22
View File
@@ -0,0 +1,22 @@
# 11 Product
Last Updated: YYYY-MM-DD
Owner: <person-or-team>
## User Segments
- <segment>
## Problems
- <problem>
## Desired Outcomes
- <outcome>
## Core Flows
- <flow>
## UX Principles
- <principle>
## Product Risks
- <risk>
@@ -0,0 +1,22 @@
# 12 Architecture
Last Updated: YYYY-MM-DD
Owner: <person-or-team>
## System Map
<high-level architecture summary>
## Components and Contracts
- <component>: <contract>
## Data Flows
- <flow>
## Critical Paths
- <path>
## Failure Modes
- <failure mode and mitigation>
## Scaling Constraints
- <constraint>
+21
View File
@@ -0,0 +1,21 @@
# 13 Tech
Last Updated: YYYY-MM-DD
Owner: <person-or-team>
## Stack Matrix
| Layer | Technology | Notes |
| --- | --- | --- |
| <layer> | <tech> | <notes> |
## Environments
- <environment details>
## Setup and Commands
- `<command>`: <purpose>
## Dependencies
- <dependency and role>
## Constraints and Limits
- <limit>
+22
View File
@@ -0,0 +1,22 @@
# 20 Now
Last Updated: YYYY-MM-DD
Owner: <person-or-team>
## Current Objective
<single objective statement>
## Active Workstreams
- <workstream>
## Blockers
- <blocker>
## Next Actions
- [TASK-YYYYMMDD-001] <action>
## Assumptions
- <assumption>
## Watchlist
- <item to monitor>
+16
View File
@@ -0,0 +1,16 @@
# 21 Backlog
Last Updated: YYYY-MM-DD
Owner: <person-or-team>
## Prioritized Items
| ID | Status | Priority | Summary | Owner | Link |
| --- | --- | --- | --- | --- | --- |
| BG-001 | todo | p1 | <item> | <owner> | <task-log-or-doc-link> |
Status values: `todo`, `in_progress`, `blocked`, `done`.
## Deferred
| ID | Reason | Revisit Date |
| --- | --- | --- |
| BG-099 | <reason> | YYYY-MM-DD |
@@ -0,0 +1,26 @@
# ADR-0000: <short title>
Date: YYYY-MM-DD
Status: proposed|accepted|superseded
Owners: <person-or-team>
## Context
<why this decision is needed>
## Decision
<what was decided>
## Consequences
- Positive: <impact>
- Negative: <tradeoff>
## Alternatives Considered
- <option A> - <why not chosen>
- <option B> - <why not chosen>
## Links
- Related tasks: `TASK-YYYYMMDD-001`
- Related docs: `<path>`
## Supersedes / Superseded By
- <ADR-id-or-none>
@@ -0,0 +1,20 @@
# YYYY-MM Digest
Month: YYYY-MM
Last Updated: YYYY-MM-DD
Owner: <person-or-team>
## Summary
<high-level summary of this month for old-history compaction>
## Key Outcomes
- <outcome>
## Decisions Referenced
- `ADR-0001` - <title>
## Notable Tasks
- `TASK-YYYYMMDD-001` - <result>
## Carryover Risks
- <risk>
@@ -0,0 +1,25 @@
# TASK-YYYYMMDD-001: <short title>
Date: YYYY-MM-DD
Owner: <person-or-team>
Status: in_progress|done|blocked
## Intent
<what this task was trying to achieve>
## Scope
- <in>
- <out>
## Changes
- <change summary>
## Validation
- <test/check 1>
- <test/check 2>
## Decision Links
- ADR: `ADR-0001`
## Follow-ups
- [BG-001] <follow-up item>