Split the home tiles into three areas with vertical spacing: accounts
(Users/Businesses/Bots), manage (Network/Notifications/Settings), and external
SimpleX (File upload + a new Get SimpleX App card). Move the Get SimpleX App link
out of the global footer into its own homepage card.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Remove the homepage tagline. Make the collapse control a proper inset pill with
a 'Collapse' label + chevron (label left, chevron right) instead of a bare
full-width row with a lone arrow; centers to just the icon when collapsed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Home page (home.html) at / shows the sidebar sections as tiles; reachable by
clicking the 'SimpleX Manager' brand in the sidebar (was redirecting to /users).
- Rename the category to 'Businesses' (route /businesses, tab/nav/_category),
keeping the per-account bot_type 'business'. Fix profile back-link label.
- Footer: link 'Bournemouth Technology Ltd' -> bournemouthtechnology.co.uk and
'SimpleX Network' -> simplex.chat.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The sidebar was height:100vh with no overflow, so on mobile the bottom-pinned
footer (network status + Logout) fell below the visible area (browser toolbar)
with no way to reach it. Add overflow-y:auto and use 100dvh on mobile so the
sidebar matches the visible viewport; 100vh kept as fallback.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Business accounts are cli profiles with businessAddress=True, so each connecting
customer gets their own group chat (handled via the existing chat UI) with an
optional welcome auto-reply. New BUSINESS_TYPES, a /business page + sidebar entry,
and a business variant of the create form. profile/chat pages route via a
_category helper. Adds business_test.py (customer connects -> lands in a business
group, not a direct contact) — passes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Relay publishers' text/links to all contacts via the native /feed command
(reports 'Forwarded to N contact(s), M errors'); reply to non-publishers with
the prohibited message and internally delete their message (CIDMInternal, as
upstream does). Filter content to text/links. Publishers accept 'Name' or
'ID:Name'; welcome/prohibited defaults list the publishers. Add publishers +
prohibited-reply fields to the create form. Adds broadcast_test.py (3 in-process
controllers: bot + publisher + subscriber) — passes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Backend (profiles.py / main.py):
- Fix bot startup crash: create active user before start_chat
- Fix address-clobbering bug on restart (UserContactLink vs CreatedConnLink)
- Add user profile type alongside bots
- Channels: create groups with observer links, classify via acceptMemberRole
- Chat rooms: get_chat_history + send_to_chat, history/messages/send routes
UI:
- Chat room view with message bubbles and live polling
- Convert top nav to collapsible left sidebar (mobile-friendly off-canvas)
- Three-way Users/Bots split; clickable cards; copy-address buttons + links
- Add Matrix theme alongside Original Light/Dark
- File upload sidebar link; site footer on all pages incl. login
- Bot-type descriptions on the Bots page; QR caption on profiles
Remove orphaned index.html (superseded by list.html).
Ignore downloaded libs/, exploration DBs, and local ai.sh.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- TemplateResponse now uses (request, name, context) signature for Starlette 0.36+
- Replace per-button hx-headers with global htmx:configRequest token injection in base.html
- Fix JS cookie regex to handle leading semicolons correctly
Tested: login, auth redirect, profile create/view/delete all return correct status codes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- simplex-deadmans-bot: Dead Man's Switch Haskell bot
- simplexxx-directory: private SimpleXXX directory bot (fork of simplex-directory-service)
- simplex-support-bot: support triage bot with configurable AI backend
- --ai-url and --ai-model flags for any OpenAI-compatible provider
- works with Grok, Ollama, OpenAI, LM Studio, etc.
- AI_API_KEY env var (GROK_API_KEY still accepted as alias)
- web: SimpleXXX directory frontend (Groups/Channels tabs, matches simplex.chat/directory style)
- manager/: placeholder for Python profile manager (coming soon)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>