sylvain
1a8115678c
chore(workflow): complete step 9, merge step 10, start step 11
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 04:17:03 +01:00
sylvain
8b10ff5016
chore(workflow): complete step 8 (audit v1.2.0), start step 9
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 04:09:00 +01:00
sylvain
50768db31f
fix(audit): sort milestones, sort JSON export, extract test helper
...
- Fix milestone section using unsorted repos list
- Apply --sort to --format json output
- Rename _sort_repos to sort_repos (now used by cli.py)
- Extract shared make_repo helper to tests/helpers.py
- Move exporter import to module level in cli.py
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 04:07:41 +01:00
sylvain
cf6f2dd3c6
chore(workflow): complete step 7 (dev v1.2.0), start step 8
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 03:59:33 +01:00
sylvain
4c66fbe98d
feat(v1.2.0): retry API, dernier commit, tri, coloration, export JSON
...
- client.py: _get_with_retry (max 2 retries, backoff lineaire), get_latest_commit
- collector.py: champ last_commit_date dans RepoData
- display.py: colonne "Dernier commit", _sort_repos (name/issues/release/activity),
_colorize_milestone_due (rouge/jaune/vert selon echeance)
- cli.py: options --sort/-s et --format/-f (table/json)
- exporter.py: nouveau module, repos_to_dicts + export_json
- 88 tests (35 nouveaux), ruff clean
fixes #8 , fixes #7 , fixes #10 , fixes #9 , fixes #6
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 03:58:45 +01:00
sylvain
19f300ccdb
chore(workflow): complete step 6 (plan v1.2.0), start step 7
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 03:50:07 +01:00
sylvain
eb927132e3
chore(workflow): init v1.2.0 (minor)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 03:44:53 +01:00
sylvain
a913a458e9
docs(analyse): workflow execution debug analysis v1.1.0
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:54:51 +01:00
sylvain
881d3a5cb1
chore(workflow): complete step 13 (retrospective), v1.1.0 done
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:50:45 +01:00
sylvain
f03a2eb054
chore(workflow): complete step 13 (retrospective), v1.1.0 done
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-11 04:49:59 +01:00
sylvain
11c69b8958
chore(workflow): complete step 11 (release v1.1.0), skip step 12
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:47:42 +01:00
sylvain
03d09ac13b
docs(v1.1.0): update README, freeze CHANGELOG, bump version
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.1.0
2026-03-11 04:46:38 +01:00
sylvain
79cbcd8e33
chore(workflow): complete step 9, merge step 10 into 11
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:45:04 +01:00
sylvain
f39158ed55
chore(workflow): complete step 8 (audit 100), start step 9
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:41:47 +01:00
sylvain
bb3bc761e3
test(collector): add filtering optimization and edge case tests
...
- test_filtered_repos_have_no_api_calls: prouve que get_latest_release et
get_milestones ne sont pas appelés pour les repos exclus par le filtre include
- test_collect_all_include_empty_list: documente le contrat implicite où
include=[] est équivalent à include=None (tous les repos inclus)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-11 04:40:40 +01:00
sylvain
1bc3b2fd36
chore(workflow): complete step 7, start step 8
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:36:56 +01:00
sylvain
844c9ccd08
chore(workflow): complete step 7, v1.1.0 dev done
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:36:11 +01:00
sylvain
2232260821
feat(cli): add --repo and --exclude filtering ( fixes #5 )
...
Add argparse-based CLI parsing with repeatable --repo/-r (include) and
--exclude/-x (exclude) options. Filtering is case-insensitive substring
matching, applied post-fetch in collect_all() per ADR-005.
- parse_args() separated from main() for testability
- main(argv=None) accepts argv for test injection
- collect_all() gains optional include/exclude parameters
- 14 new tests (8 filtering + 6 CLI parsing/integration)
- All 51 tests pass, backward compatible (no args = v1.0.0 behavior)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:35:42 +01:00
sylvain
0f8e34edf3
chore(workflow): complete step 6, start step 7
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:30:54 +01:00
sylvain
8e8271be9d
docs(v1.1.0): version plan and ADR — repo filtering feature
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:30:07 +01:00
sylvain
85c3023b34
chore(workflow): init v1.1.0 (minor)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 04:18:41 +01:00
sylvain
22590d7250
docs(analyse): workflow analysis v1.0.0 — complete breakdown
...
13 steps, 11 agents, 19 MCP calls, chronology, metrics, recommendations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 19:42:13 +01:00
sylvain
5c8e833d8b
chore(workflow): complete step 13 (retrospective), v1.0.0 done
...
Metrics, analysis, MEMORY.md written. Milestone v1.0.0 closed on Gitea.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 19:31:45 +01:00
sylvain
cf88ba0ef5
chore(workflow): complete step 10, start step 11
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v1.0.0
2026-03-10 19:29:00 +01:00
sylvain
8b4677a6f7
docs(v1.0.0): update README and create CHANGELOG
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-10 19:28:25 +01:00
sylvain
6ed666fb66
chore(workflow): complete step 9 (smoke test OK), start step 10
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 19:08:48 +01:00
sylvain
b15ba9eea8
fix(cli): add __main__.py for python -m gitea_dashboard
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 19:08:25 +01:00
sylvain
6fa8990cae
chore(workflow): complete step 8 (audit 97/100), start step 9
...
Reviewer: 81→100, Guardian: 91→97, 5 findings corrected.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 19:03:09 +01:00
sylvain
01f88a0eca
fix(audit): correct findings from review round 1
...
- client: add raise_for_status() in get_latest_release() for non-404 errors (FINDING-001)
- client: add timeout parameter (default 30s) passed to all session.get() calls (FINDING-004/SEC-002)
- cli: replace return with sys.exit(1) in all except blocks (FINDING-002)
- test_cli: remove duplicate test_exits_when_token_missing, assert GITEA_TOKEN in stderr (FINDING-006)
- test_cli: update connection error tests to expect SystemExit(1) after exit code fix
- test_cli: rework token masking test to inject token into exception message (FINDING-007)
- test_client: add test_raises_on_server_error for HTTP 500 path (FINDING-001)
- test_client: add tests for default and custom timeout values (FINDING-004)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-10 19:00:57 +01:00
sylvain
e05578676f
chore(workflow): complete step 7, start step 8
...
35 tests pass, 4 modules implemented (client, collector, display, cli).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:55:22 +01:00
sylvain
4aa648fa8c
feat(cli): add main entry point with error handling ( fixes #4 )
...
Read GITEA_TOKEN (required) and GITEA_URL (default) from env vars,
orchestrate client/collect/render pipeline, handle connection and
timeout errors gracefully. Never expose token in error messages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:54:29 +01:00
sylvain
8fbdfcafd4
feat(display): add Rich dashboard rendering ( fixes #3 )
...
Render repos in a Rich table with [F]ork/[A]rchive/[M]irror indicators,
color-coded issue counts, relative release dates, and a milestones section.
Handles empty repo lists gracefully.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:54:25 +01:00
sylvain
b52bc72ce8
feat(collector): add RepoData dataclass and collect_all ( fixes #2 )
...
- RepoData dataclass with all repo fields
- collect_all enriches each repo with release and milestones
- Computes open_issues = open_issues_count - open_pr_counter
- 6 unit tests with mocked GiteaClient
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:51:17 +01:00
sylvain
4d66aea6ed
feat(client): add GiteaClient with auth and pagination ( fixes #1 )
...
- GiteaClient with requests.Session and token auth header
- _get_paginated for automatic pagination (limit=50)
- get_repos, get_latest_release (None on 404), get_milestones
- 9 unit tests with mocked requests.Session
- Fix setuptools build backend in pyproject.toml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:50:28 +01:00
sylvain
18ce3b953e
docs(v1.0.0): plan de version, architecture, ADR-002/003
...
- Plan en 2 phases dev : client+collecteur puis affichage+CLI
- Architecture 4 modules avec interfaces definies
- ADR-002: 4 modules max, ADR-003: pas de parallelisation en v1
chore(workflow): complete step 6, start step 7
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:44:11 +01:00
sylvain
e757c35767
docs(v1.0.0): version plan and ADR
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:43:29 +01:00
sylvain
0bd64d64a9
chore(workflow): complete step 5, start step 6
...
Gitea milestone v1.0.0 + issues #1-#4 + labels created.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:39:18 +01:00
sylvain
de56585840
docs(research): API Gitea endpoints, pagination, auth, cas limites
...
chore(workflow): complete step 4, start step 5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:28:03 +01:00
sylvain
2eec10c61a
chore(workflow): complete steps 1-3, start step 4
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:22:04 +01:00
sylvain
4e72ddc32f
chore: init project structure
...
Discovery synthesis, docs tree, Python src layout, CLAUDE.md, pyproject.toml.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:21:33 +01:00
sylvain
11e5def11c
chore(workflow): init v1.0.0 (major-initial)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:19:00 +01:00
5bedb1f8ea
Initial commit
2026-03-10 18:14:04 +01:00