Skip to content

Commit 1bb985d

Browse files
committed
feat(tui): split settings into focused panels, real SIP panel, voice to Session, wiki sync
Settings now opens as separate LLM & Provider / Email (SMTP+IMAP) / General panels, each with its own Save+validation. Provider panel: active-provider dropdown is the single way to change the active provider (persists across restarts), active one marked (attivo), removed the Set-default button, Edit opens the selected provider, API key masked. SIP is now a full editable panel (was read-only). Voice moved from Settings to Session. TTS engine panel gained reset-to-default. Docs updated to the new structure and mirrored to the GitHub wiki via sync-wiki.yml; Help/Docs points at the wiki.
1 parent d430b7c commit 1bb985d

20 files changed

Lines changed: 1637 additions & 363 deletions

.github/workflows/release.yml

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -520,34 +520,38 @@ jobs:
520520
artifacts/**/*.tar.gz
521521
artifacts/**/*.msi
522522
body: |
523-
### Start-up options: an upgrade note
523+
### Settings, rebuilt around separate panels
524524
525-
Options given on the command line were **silently ignored** when they followed a
526-
valueless switch — `agent --headless --LLM:Anonymize true` made the switch swallow
527-
the next key, so `--Urls`, `--Sip:ListenPort`, `--Tts:Engine`, `--LLM:Anonymize`,
528-
`--SkipIndexingOnStartup` and any other `--Key value` after `--headless`, `--tui`,
529-
`--no-update`, `--no-gui` or `--enable-log` did nothing (this also affected the
530-
systemd unit shipped by the Linux installer). Fixed: every documented override now
531-
applies wherever it appears. The same settings passed as environment variables or
532-
written in `appsettings.json` worked before and are unaffected.
525+
The single tabbed "Main settings" window is gone. Settings now opens as focused
526+
panels — **LLM & Provider**, **Email (SMTP + IMAP)** and **General** — each with
527+
its own **Save** that closes only when its values validate, so a bad value in one
528+
area never blocks the others.
533529
534-
### Chat sessions recover instead of failing
530+
### Provider management is clearer
535531
536-
A chat that has been idle for over an hour (or a server restart) no longer returns
537-
"session not found": the conversation continues on a new session, and the previous
538-
turns are restored when the client resends its transcript — the terminal UI always
539-
does, so you just keep talking. API clients get the new `session_id` (plus
540-
`session_resumed: true` when the earlier turns came back) instead of a 404.
532+
The **active-provider dropdown** is now the single way to change which provider is
533+
active: pick one, press Save, and the choice persists across restarts. The active
534+
provider is marked **(attivo)** in the list, the dropdown and the list always agree,
535+
and the old "Set default" button is gone. **Edit** opens the provider selected in
536+
the list, and the API-key field shows the stored key masked.
541537
542-
### Privacy
538+
### SIP telephony is now a real settings panel
543539
544-
With anonymisation enabled, the transcript a client resends is now anonymised like
545-
a normal prompt instead of entering the conversation in clear text.
540+
The SIP page used to be read-only. It is now a full editable panel: enable/disable,
541+
listen port, registrar, credentials, answer mode and PIN, plus call / hang-up /
542+
reload actions.
546543
547-
### Documentation
544+
### Voice moved to the Session menu
548545
549-
New plain-language guide **How AgentBridge works** (what an AI agent is, its tools,
550-
the documents area, attachments) under `docs/guide/`, shipped with this archive.
546+
Voice starts a one-shot dictation, so it is no longer a "setting": it now lives
547+
under **Session**, alongside the model switch and session features. The TTS engine
548+
panel gained a **reset to default**.
549+
550+
### Documentation on the wiki
551+
552+
The user guides now live on the GitHub wiki, kept in sync automatically from the
553+
repository. **Help → Documentation** (and `/docs`) opens
554+
https://github.com/Graphene-Lab/AgentBridge/wiki.
551555
generate_release_notes: true
552556

553557
# Microsoft Store submission: once the release exists with the MSI attached, point the

.github/workflows/sync-wiki.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Sync docs to wiki
2+
3+
# Mirrors the user-facing docs/ tree into the GitHub wiki (Graphene-Lab/AgentBridge.wiki).
4+
# Runs on every push that touches docs/ and on manual dispatch. The wiki is a separate git
5+
# repo; this job clones it, regenerates the flat pages from docs/ with tools/wiki/sync-wiki.js,
6+
# and pushes. Keeping the wiki in the repo means it stays in sync automatically whenever a
7+
# guide changes — see the docs rule in AGENTS.md.
8+
on:
9+
push:
10+
branches: [master]
11+
paths:
12+
- 'docs/**'
13+
- 'tools/wiki/**'
14+
workflow_dispatch:
15+
16+
permissions:
17+
contents: write
18+
19+
concurrency:
20+
group: sync-wiki
21+
cancel-in-progress: false
22+
23+
jobs:
24+
sync:
25+
runs-on: ubuntu-latest
26+
steps:
27+
- name: Checkout main repo (docs + sync script)
28+
uses: actions/checkout@v4
29+
with:
30+
path: main
31+
32+
- name: Setup Node
33+
uses: actions/setup-node@v4
34+
with:
35+
node-version: '20'
36+
37+
- name: Clone wiki (or init if empty)
38+
shell: bash
39+
run: |
40+
WIKI_URL="https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.wiki.git"
41+
if git clone "$WIKI_URL" wiki 2>/dev/null; then
42+
echo "wiki cloned"
43+
else
44+
echo "wiki not found — initialising"
45+
mkdir -p wiki
46+
( cd wiki && git init -q && git remote add origin "$WIKI_URL" )
47+
fi
48+
env:
49+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
50+
51+
- name: Generate wiki pages from docs
52+
shell: bash
53+
run: node main/tools/wiki/sync-wiki.js main/docs wiki
54+
55+
- name: Commit and push
56+
shell: bash
57+
working-directory: wiki
58+
run: |
59+
git config user.name "github-actions[bot]"
60+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
61+
git add -A
62+
if git diff --cached --quiet; then
63+
echo "no wiki changes"
64+
exit 0
65+
fi
66+
git commit -q -m "docs: sync wiki from docs/ (${{ github.sha }})"
67+
# The wiki default branch may be main or master; push whatever HEAD is on.
68+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
69+
[ "$BRANCH" = "HEAD" ] && BRANCH=main
70+
git push -u origin "HEAD:$BRANCH"

AGENTS.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,21 @@ Rules:
3939
- Before writing any guide, ask: *who reads this — the person who installs the app, or the
4040
developer who maintains the code?* User → `docs/`. Developer → `docs-dev/`.
4141

42+
### The GitHub wiki mirrors `docs/` (keep it in sync)
43+
44+
The public wiki at **https://github.com/Graphene-Lab/AgentBridge/wiki** is generated from
45+
`docs/` by `.github/workflows/sync-wiki.yml` (runs on every push that touches `docs/` or
46+
`tools/wiki/`, and on manual dispatch). The workflow clones the wiki repo, regenerates the
47+
flat pages with `tools/wiki/sync-wiki.js` (each `docs/**/*.md` becomes a wiki page named by
48+
its file basename; `INDEX.md``Home`; relative `.md` links are rewritten to the flat page
49+
name), and pushes.
50+
51+
**Rule: the wiki is never edited by hand — edit `docs/` and let the workflow sync it.** Any
52+
change to a user guide in `docs/` must be pushed so the wiki regenerates; do not make
53+
divergent edits directly in the wiki repo (they will be overwritten on the next sync). When
54+
you add or rename a `docs/` page, the sync picks it up automatically; just make sure the
55+
links between guides use the file paths so the rewriter can map them to the wiki page names.
56+
4257
## Release gate: IsPrerelease flag
4358

4459
`AgentBridge.csproj` carries `<IsPrerelease>` (default `true`). It decides whether a GitHub

AgentBridge.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
off triggers release.yml automatically (tag v1.yy.MM.dd created by the workflow).
1717
Date-based auto version, same scheme as UISupportBlazor/UISupportGeneric
1818
(1.yy.MM.dd, e.g. 1.26.08.09). -->
19-
<IsPrerelease>true</IsPrerelease>
19+
<IsPrerelease>false</IsPrerelease>
2020
<!-- NuGet wait marker (release.ps1 / release.yml): true = the release build must wait for
2121
today's core dependency packages on nuget.org (a core repo changed today and its
2222
package is still propagating); false = no core repo changed since its last tag, so the
2323
wait is skipped. Default true (conservative: a manual gate-off push without
2424
release.ps1 still waits). -->
25-
<NuGetWait>true</NuGetWait>
25+
<NuGetWait>false</NuGetWait>
2626
<!-- NuGetWaitPackages: the comma-separated package ids the release build waits for when
2727
<NuGetWait> is true. release.ps1 narrows it to the repos that actually changed today so
2828
the wait exits as soon as those propagate instead of burning the full 30 minutes on
@@ -37,7 +37,7 @@
3737
pins it to the LOCAL push date in the gate-off commit, so CI (DateTime.Now = UTC)
3838
can never derive the previous UTC day across the local/UTC-midnight boundary and
3939
reuse an already-released version (release.yml would skip it). -->
40-
<ReleaseDate Condition="'$(ReleaseDate)' == ''">$([System.DateTime]::Now.ToString("yy.MM.dd"))</ReleaseDate>
40+
<ReleaseDate Condition="'$(ReleaseDate)' == ''">26.09.15</ReleaseDate>
4141
<Version Condition="'$(IsPrerelease)' == 'true'">1.$(ReleaseDate)-prerelease</Version>
4242
<Version Condition="'$(IsPrerelease)' != 'true'">1.$(ReleaseDate)</Version>
4343
</PropertyGroup>

0 commit comments

Comments
 (0)