UX/UI redesign for the mobile WebView

- Compact top bar (logo, OASIS, user avatar with default fallback).
- Fixed bottom navigation (Search, Inbox, Write, Activity + Peers/Invites) with active state.
- Removed duplicated header nav buttons on mobile.
- Personal/Community submenus: single-open accordion.
- Activity filters grouped into quick modes + collapsible thematic groups.
- Private messages rendered as chat bubbles on mobile.
- Text fixes, full-width stacked tables, touch feedback; Activity group labels in 11 locales.
Mobile-scoped (mobile.css + views); desktop unaffected.
This commit is contained in:
s1to 2026-07-09 09:56:30 +02:00
parent e563b86ede
commit ea5f5cbcc2
16 changed files with 847 additions and 35 deletions

View file

@ -972,6 +972,12 @@ const getOasisVersion = async (feedId) => {
if (OASIS_VERSION && mine !== OASIS_VERSION) {
ssb.publish({ type: 'oasisVersion', version: OASIS_VERSION, updatedAt: new Date().toISOString() }, () => {});
}
try {
const img = await about.image(ssb.id);
global.__OASIS_SELF_AVATAR__ = (typeof img === 'string' && img[0] === '&')
? getAvatarUrl(img)
: '/assets/images/default-avatar.png';
} catch (_) {}
} catch (_) {}
})();
async function renderBlobMarkdown(text, mentions = {}, myFeedId, myUsername) {
@ -2802,6 +2808,7 @@ router
inhabitantsModel.getLastActivityTimestampByUserId(myFeedId).catch(() => null)
]);
const larpHouse = larpHouseKey ? { key: larpHouseKey, ...larpModel.getHouse(larpHouseKey) } : null;
global.__OASIS_SELF_AVATAR__ = getAvatarUrl(image);
const stats = await inhabitantsModel.getInhabitantStats(myFeedId, myFeedId).catch(() => ({}));
const userActions = (allActions || []).filter(a => a && a.author === myFeedId && a.type !== 'tombstone' && a.type !== 'post');
const normTs = t => { const n = Number(t || 0); return !isFinite(n) || n <= 0 ? 0 : n < 1e12 ? n * 1000 : n; };