fix(board): show configured repos — fold default into picker + read config live#11
Merged
Merged
Conversation
…ectable A common config sets `default_repo` but leaves `repos` empty. The board/new-issue pickers are built from `repos` only, so the <select> had zero options — the board showed "nothing to select" even though a repo WAS configured (the JS set sel.value = default_repo, but with no matching <option> that's a no-op). `/config` now returns the resolved default as a selectable option (first, deduped), so both views populate correctly whether you set `repos`, `default_repo`, or both.
|
👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow. |
There was a problem hiding this comment.
QA Audit — PR #11 | fix(board): fold default_repo into the picker so a set default is selectable
VERDICT: WARN (CI pending — re-evaluate on terminal green)
CI Status
- test: in_progress
Diff Review
api.py:/confignow folds the resolveddefault_repointorepos(prepended, deduped) so the picker always has a matching<option>. Clean fix — no view JS change needed, the existingsel.value = default_repopath just works.tests/test_board_view.py: Two new tests — empty-repos-with-default, and default-already-in-repos. Assertions are precise and cover the dedup + order-preservation edge cases.
Observations
- No unresolved CodeRabbit threads.
- No security, data-loss, or correctness concerns on inspection.
- LOW: CI (
test) is still in progress; formal PASS/FAIL deferred until checks settle.
— Quinn, QA Engineer
|
Submitted COMMENT review on #11. |
build_data_router now accepts a config GETTER (callable) as well as a dict. register() passes registry.live_config when the host offers it, so the board's /config reads the current repos/default_repo per request — a config save (which hot-reloads the graph but can't re-mount this router) is reflected immediately, no server restart. A plain dict (tests, older host) stays a fixed snapshot.
There was a problem hiding this comment.
QA Audit — PR #11 | fix(board): fold default_repo into the picker so a set default is selectable
VERDICT: WARN (CI still running; code review clean)
CI Status
- test: in_progress
Diff Review
api.py:/confignow folds resolveddefault_repointo returnedreposlist (deduped, first position) — fixes empty picker whendefault_repois set butreposis emptyapi.py+__init__.py:build_data_routernow accepts a callable getter for live config reads, falling back to static dict for older hosts — clean backward compat- Three new tests cover: default+solo, default already present (no dup), and live-getter path
Observations
- LOW: clawpatch structural review unavailable for this repo (checkout cache resolution failed); diff-based review only
- The fix is targeted, tests are well-chosen, and the live-config path preserves backward compat. Once CI goes green, this is an APPROVE.
— Quinn, QA Engineer
|
Submitted COMMENT review on |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two fixes so the board reflects your configured repos correctly.
1. A set
default_repois now selectable (empty-picker bug)A common config sets
default_repoand leavesreposempty:github: { default_repo: owner/name, repos: [] }. The picker is built fromreposonly, thenselect.value = default_repois a no-op with no matching<option>— so the board showed "nothing to select" despite a repo being configured./confignow folds the resolved default intorepos(first, deduped), fixing the board and the new-issue form.2. The board reads config live (no restart)
build_data_routeraccepts a config getter (callable) as well as a dict.register()passesregistry.live_configwhen the host offers it, so/configreads the currentrepos/default_repoper request — a config save (which hot-reloads the graph but can't re-mount this router) shows immediately, no restart. Plain dict (tests / older host) stays a snapshot. Pairs with a protoAgent host change addingPluginRegistry.live_config().Tests
default set + repos empty → default selectable; no dup when already present; live getter reflected per request.
ruffclean; 84 passed.