Skip to content

Commit 3e40ab4

Browse files
committed
more more more more more fixes
1 parent 351344d commit 3e40ab4

28 files changed

+94
-44
lines changed

.github/CONTRIBUTING.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Before opening a PR, ensure:
4040
- [ ] **Docs**: Updated for user-facing changes
4141
- [ ] **Lint**: `ruff check src/` passes
4242
- [ ] **Types**: `mypy src/ --ignore-missing-imports` passes (or known issues documented)
43-
- [ ] **Changelog**: Updated in `docs/release/changelog.md` for notable changes
43+
- [ ] **Changelog**: Updated in `docs/release/CHANGELOG.md` for notable changes
4444

4545
## Coding Standards
4646

@@ -51,12 +51,18 @@ Before opening a PR, ensure:
5151

5252
See [Coding Standards](https://github.com/stuchain/CuePoint/blob/main/docs/development/coding-standards.md).
5353

54+
**Documentation:** [docs/README.md](https://github.com/stuchain/CuePoint/blob/main/docs/README.md) — single entry point for all docs.
55+
5456
## Contribution Flow
5557

5658
1. Fork the repo
5759
2. Create a branch (`git checkout -b feature/your-feature`)
5860
3. Implement changes
5961
4. Run tests: `python scripts/run_tests.py --all`
60-
5. Open a PR with the checklist above## Documentation- **Start here**: [docs/README.md](https://github.com/stuchain/CuePoint/blob/main/docs/README.md)
62+
5. Open a PR with the checklist above
63+
64+
## Documentation
65+
66+
- **Start here**: [docs/README.md](https://github.com/stuchain/CuePoint/blob/main/docs/README.md)
6167
- **Architecture**: [docs/development/architecture.md](https://github.com/stuchain/CuePoint/blob/main/docs/development/architecture.md)
6268
- **Match rules**: [docs/development/match-rules-and-scoring.md](https://github.com/stuchain/CuePoint/blob/main/docs/development/match-rules-and-scoring.md)

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
## Docs
1212

1313
- [ ] Docs updated for user-facing changes
14-
- [ ] Changelog updated in `docs/release/changelog.md` (if notable)
14+
- [ ] Changelog updated in `docs/release/CHANGELOG.md` (if notable)
1515

1616
## Checklist
1717

.github/TECHNICAL_ANALYSIS.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ This document explains how CuePoint works under the hood. It is written for tech
44

55
## High-level architecture
66

7-
CuePoint is a shared core pipeline surfaced through two interfaces:
7+
CuePoint exposes **two tools** from the start screen:
88

9-
- **Core pipeline**: parsing, query generation, search, scoring, and export.
10-
- **Interfaces**: GUI and CLI both call the same services (`ProcessorService`).
9+
- **inKey** — Rekordbox playlist → Beatport metadata enrichment. Shared core pipeline (parsing, query generation, search, scoring, export) surfaced through GUI and CLI. Both call the same services (`ProcessorService`).
10+
- **inCrate** — Inventory from full Rekordbox collection, discovery (Beatport genre charts from library artists, new releases from labels), and Beatport playlist creation. Orchestration: `InventoryService`, `IncrateDiscoveryService`, and `src/cuepoint/incrate/` (inventory DB, discovery, playlist writer, enrichment).
1111

12-
Primary orchestration happens in `src/cuepoint/services/processor_service.py`, which:
12+
Primary orchestration for **inKey** happens in `src/cuepoint/services/processor_service.py`, which:
1313

1414
1. Normalizes track inputs.
1515
2. Generates search queries.
@@ -174,7 +174,7 @@ Settings are mapped from nested YAML into a flat `SETTINGS` dict and are read by
174174

175175
**CLI**
176176

177-
- Entry point in `main.py`, with CLI logic in `src/cuepoint/cli/cli_processor.py`.
177+
- Entry point: run from project root as `python main.py` (root `main.py` delegates to `src/main.py`). CLI logic in `src/cuepoint/cli/cli_processor.py`.
178178
- Accepts `--xml`, `--playlist`, `--out`, and other flags.
179179
- Writes outputs to the configured output directory.
180180

.lycheeignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,12 @@ file://.*/docs/policy/telemetry\.md
2323
file://.*/docs/release/link
2424
file://.*/docs/security/Security_Incident_Response\.md
2525
file://.*/docs/operations/Release/
26+
# Exported Beatport API HTML (local asset paths from export, not repo paths)
27+
file:///S:/static/
28+
file:///S:/v4/
2629

27-
# Beatport external URLs: timeout in CI or example/placeholder URLs that 404
30+
# Beatport external URLs: timeout in CI or example/placeholder URLs that 404/403
2831
https://accounts.beatport.com/developer/request-api-key
2932
https://beatport.com/track/x/1
3033
https://api.beatport.com/v4
34+
https://support.beatport.com/hc/en-us/articles/4414997837716-Terms-and-Conditions#api

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
<li><strong>Caching</strong>: request caching to speed up repeated runs</li>
7272
<li><strong>Audit logging</strong>: query and candidate logs for verification</li>
7373
<li><strong>GUI + CLI</strong>: run via desktop UI or command line</li>
74+
<li><strong>inCrate</strong>: inventory from Rekordbox, discover Beatport genre charts and new releases from labels, build a Beatport playlist</li>
7475
</ul>
7576

7677
<h2>How to run</h2>

docs/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ For contributors: setup, architecture, extending the codebase.
4141
| [Common Dev Errors](development/common-errors.md) | Dev environment troubleshooting |
4242
| [Coding Standards](development/coding-standards.md) | Formatting, linting, typing |
4343
| [Remediation notes](development/remediation-notes.md) | Archive of one-off fix notes |
44+
| [Feature designs (inCrate)](feature/README.md) | inCrate: inventory, discovery, Beatport playlists — spec and implementation order |
45+
| [inCrate spec](incrate-spec.md) | inCrate requirements and decisions |
4446

4547
---
4648

@@ -74,4 +76,4 @@ Release and ops docs (checklists, runbooks, changelog policy, signing guides): [
7476

7577
---
7678

77-
*Last updated: 2026-02-03*
79+
*Last updated: 2026-03-09*

docs/development/architecture.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ Input (Rekordbox XML) → Parse → Query Generation → Search → Match/Score
6060

6161
## Code Reading Guide
6262

63-
1. Start at `src/main.py` (CLI) or `src/gui_app.py` (GUI)
64-
2. Follow `CLIProcessor` or GUI controller into `ProcessorService`
65-
3. Trace `ProcessorService.process_track()``MatcherService.find_best_match()``core/matcher.best_beatport_match()`
66-
4. For Beatport data flow: `beatport_service.fetch_track_data()``data/beatport.parse_track_page()`
63+
1. **Entry points**: CLI is run from **project root** as `python main.py` (root `main.py` delegates to `src/main.py`). GUI: `src/gui_app.py` or `run_gui.bat` / `run_gui.command` / `run_gui.sh` from root.
64+
2. Start at `src/main.py` (CLI) or `src/gui_app.py` (GUI).
65+
3. Follow `CLIProcessor` or GUI controller into `ProcessorService`.
66+
4. Trace `ProcessorService.process_track()``MatcherService.find_best_match()``core/matcher.best_beatport_match()`.
67+
5. For Beatport data flow: `BeatportService` (in `services/beatport_service.py`) uses `data/beatport.py` and `data/beatport_search.py`; `beatport_service.fetch_track_data()``data/beatport.parse_track_page()`.
6768

6869
## Related Docs
6970

docs/development/developer-setup.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ python scripts/run_tests.py --unit
7070
# Run all tests (unit, integration, system)
7171
python scripts/run_tests.py --all
7272

73-
# Run CLI with sample XML
74-
python src/main.py --xml src/tests/fixtures/rekordbox/minimal.xml --playlist "Test Playlist" --out test
73+
# Run CLI with sample XML (from project root)
74+
python main.py --xml src/tests/fixtures/rekordbox/minimal.xml --playlist "Test Playlist" --out test
7575

7676
# Run GUI
7777
python src/gui_app.py

docs/features/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ This folder documents **all** features of the CuePoint app—large and small. Ea
3030
| CLI | [cli-and-arguments.md](cli-and-arguments.md) | CLI processor, all arguments, migrate |
3131
| Reliability | [reliability-and-performance.md](reliability-and-performance.md) | Retry, circuit breaker, guardrails |
3232
| Support | [support-and-diagnostics.md](support-and-diagnostics.md) | Support bundle, log viewer, crash handler |
33+
| inCrate | [incrate.md](incrate.md) | Inventory, discovery (charts + new releases), Beatport playlist |

docs/features/incrate.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# inCrate
2+
3+
inCrate is CuePoint’s second tool: a music-digging workflow that uses your Rekordbox collection to discover new music on Beatport and build a Beatport playlist.
4+
5+
## What inCrate does
6+
7+
1. **Inventory** — Build a queryable index from your full Rekordbox collection (artist, title, remix/version, label). Optionally enrich missing labels using the same Beatport matching flow as inKey.
8+
2. **Charts** — Discover Beatport genre charts published in the past month where the chart author is one of your library artists, and add whole charts to a playlist.
9+
3. **New releases** — For each label in your inventory, find releases from the last 30 days on Beatport and add them to the same playlist.
10+
4. **Beatport playlist** — Create or use a Beatport playlist per run (e.g. date-based name like `feb26` or `2025-02-26`) and add discovered tracks to it.
11+
12+
## Where it lives in the app
13+
14+
From the CuePoint start screen you can choose **inKey** (metadata enrichment) or **inCrate** (inventory and discovery). inCrate uses its own UI flow: inventory, discovery (charts + new releases), and playlist creation.
15+
16+
## Implementation and design
17+
18+
- **Requirements and decisions:** [inCrate spec](../incrate-spec.md)
19+
- **Implementation order and detailed design:** [Feature implementation designs (inCrate)](../feature/README.md) — phases 1–5 (inventory, Beatport API, discovery, playlist/auth, UI).
20+
21+
Core code areas: `src/cuepoint/incrate/` (inventory, discovery, playlist writer, enrichment), `InventoryService`, `IncrateDiscoveryService`, Beatport API client and playlist auth as described in the spec and feature docs.

0 commit comments

Comments
 (0)