Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
1feaf69
style(chat): improve user list display in right sidebar
64johnlee May 3, 2026
2903663
feat(chat): add emoji button and inputmode for chat messages
64johnlee May 3, 2026
4d1b50b
style(people): use icon buttons for Chat/Mail in list view
64johnlee May 3, 2026
413a0bd
feat(forums): add clear button to forum search bar
64johnlee May 3, 2026
dceb40b
feat(network): add clear button to friends search bar
64johnlee May 3, 2026
381b16e
feat(people): add clear button to contacts search bar
64johnlee May 3, 2026
f2bef79
feat(boards): add clear button to board search bar
64johnlee May 3, 2026
00c939f
feat(chat): show member count in chat lobby user list
64johnlee May 3, 2026
e25b6b5
feat(network): show online/total friend count in header
64johnlee May 3, 2026
0cfa319
feat(channels): show post count and publish date in post cards
64johnlee May 3, 2026
a385a63
feat(boards): show post count and publish date in board post cards
64johnlee May 3, 2026
a35a1ef
chore: bump PR
64johnlee May 4, 2026
49d22ea
chore: bump PR
64johnlee May 4, 2026
ee1f1d3
chore: bump PR
64johnlee May 4, 2026
b423688
chore: bump PR
64johnlee May 4, 2026
1038512
chore: bump PR
64johnlee May 5, 2026
6775181
chore: bump PR
64johnlee May 5, 2026
1568850
chore: bump PR
64johnlee May 6, 2026
e48dc6c
chore: bump PR
64johnlee May 6, 2026
16f30f3
chore: bump PR
64johnlee May 7, 2026
ce48fe8
chore: bump PR
64johnlee May 7, 2026
4945169
chore: bump PR
64johnlee May 8, 2026
b91143e
chore: bump PR
64johnlee May 8, 2026
49d8869
chore: bump PR
64johnlee May 9, 2026
1fada51
chore: bump PR
64johnlee May 9, 2026
447661b
chore: bump PR
64johnlee May 10, 2026
3ffc784
chore: bump PR
64johnlee May 10, 2026
113a9a4
chore: bump PR
64johnlee May 11, 2026
b188872
chore: bump PR
64johnlee May 11, 2026
0d96484
chore: bump PR
64johnlee May 12, 2026
8446904
chore: bump PR
64johnlee May 12, 2026
e0295b3
chore: bump PR
64johnlee May 13, 2026
5ab0fc9
chore: bump PR
64johnlee May 13, 2026
998bbf5
chore: bump PR
64johnlee May 14, 2026
7a5b6ab
chore: bump PR
64johnlee May 14, 2026
cc72927
chore: bump PR
64johnlee May 15, 2026
407e9e6
chore: bump PR
64johnlee May 15, 2026
c881e77
chore: bump PR
64johnlee May 16, 2026
a1daf49
chore: bump PR
64johnlee May 16, 2026
3898321
chore: bump PR
64johnlee May 17, 2026
d7c09f3
chore: bump PR
64johnlee May 17, 2026
fa74ccb
chore: bump PR
64johnlee May 18, 2026
a30755f
chore: bump PR
64johnlee May 18, 2026
90bf589
chore: bump PR
64johnlee May 19, 2026
04de41a
chore: bump PR
64johnlee May 19, 2026
7a83263
chore: bump PR
64johnlee May 20, 2026
be9bbd3
chore: bump PR
64johnlee May 20, 2026
8a7693d
chore: bump PR
64johnlee May 21, 2026
26a6d96
chore: bump PR
64johnlee May 21, 2026
3415f43
chore: bump PR
64johnlee May 22, 2026
f8d8d81
chore: bump PR
64johnlee May 22, 2026
8033f0b
chore: bump PR
64johnlee May 23, 2026
371fd59
chore: bump PR
64johnlee May 23, 2026
bbe37b2
chore: bump PR
64johnlee May 24, 2026
dc8bd5f
chore: bump PR
64johnlee May 24, 2026
d6fa40d
chore: bump PR
64johnlee May 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# bump 1777865701
# bump 1777865789
# bump 1777867271
# bump 1777910579
# bump 1777953673
# bump 1777996871
# bump 1778040074
# bump 1778083280
# bump 1778126475
# bump 1778169671
# bump 1778212867
# bump 1778256060
# bump 1778299258
# bump 1778342457
# bump 1778385658
# bump 1778428858
# bump 1778472058
# bump 1778515265
# bump 1778558444
# bump 1778601649
# bump 1778644843
# bump 1778688048
# bump 1778731247
# bump 1778774447
# bump 1778817646
# bump 1778860848
# bump 1778904044
# bump 1778947245
# bump 1778990447
# bump 1779033642
# bump 1779076844
# bump 1779120049
# bump 1779163246
# bump 1779206448
# bump 1779249647
# bump 1779292848
# bump 1779336044
# bump 1779379250
# bump 1779422447
# bump 1779465646
# bump 1779508842
# bump 1779552044
# bump 1779595244
# bump 1779638444
# bump 1779681643
7 changes: 5 additions & 2 deletions webui-src/app/boards/board_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ const BoardView = () => {
{
style: 'display:' + (bsubscribed ? 'flex' : 'none'),
},
m('.posts__heading', m('h3', 'Posts')),
m('.posts__heading', m('h3', `Posts (${Object.keys(plist).filter(k => plist[k].isSearched).length})`)),
m(
'.posts-container',
Object.keys(plist).map((key, index) => [
Expand All @@ -281,7 +281,10 @@ const BoardView = () => {
: 'data:image/png;base64,' + plist[key].post.mThumbnail.mData.base64,
alt: 'No Thumbnail',
}),
m('p', plist[key].post.mMeta.mMsgName),
m('p.title', plist[key].post.mMeta.mMsgName),
m('p.date', (plist[key].post.mMeta.mPublishTs && typeof plist[key].post.mMeta.mPublishTs === 'object')
? new Date(plist[key].post.mMeta.mPublishTs.xint64 * 1000).toLocaleDateString()
: ''),
]
),
])
Expand Down
31 changes: 20 additions & 11 deletions webui-src/app/boards/boards_util.js
Original file line number Diff line number Diff line change
Expand Up @@ -149,19 +149,28 @@ const SearchBar = () => {
let searchString = '';
return {
view: (v) =>
m('input[type=text][id=searchboard][placeholder=Search Subject].searchbar', {
value: searchString,
oninput: (e) => {
searchString = e.target.value.toLowerCase();
for (const hash in Data.DisplayBoards) {
if (Data.DisplayBoards[hash].name.toLowerCase().indexOf(searchString) > -1) {
m('.searchbar-container', [
m('input[type=text][id=searchboard][placeholder=Search Subject].searchbar', {
value: searchString,
oninput: (e) => {
searchString = e.target.value.toLowerCase();
for (const hash in Data.DisplayBoards) {
Data.DisplayBoards[hash].isSearched = searchString === '' || Data.DisplayBoards[hash].name.toLowerCase().indexOf(searchString) > -1;
}
},
}),
m('button.searchbar-clear', {
title: 'Clear search',
style: 'display: ' + (searchString ? 'inline-block' : 'none'),
onclick: () => {
searchString = '';
for (const hash in Data.DisplayBoards) {
Data.DisplayBoards[hash].isSearched = true;
} else {
Data.DisplayBoards[hash].isSearched = false;
}
}
},
}),
m.redraw();
},
}, m('i.fas.fa-times')),
]),
};
};

Expand Down
9 changes: 6 additions & 3 deletions webui-src/app/channels/channel_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ const ChannelView = () => {
},
[
m('.posts__heading', [
m('h3', 'Posts'),
m('h3', `Posts (${Object.keys(plist).filter(k => plist[k].isSearched).length})`),
mychannel &&
m(
'button',
Expand All @@ -441,11 +441,14 @@ const ChannelView = () => {
m('img', {
src:
plist[key].post.mThumbnail.mData.base64 === ''
? 'data/streaming.png'
? 'data:streaming.png'
: 'data:image/png;base64,' + plist[key].post.mThumbnail.mData.base64,
alt: 'No Thumbnail',
}),
m('p', plist[key].post.mMeta.mMsgName),
m('p.title', plist[key].post.mMeta.mMsgName),
m('p.date', (plist[key].post.mMeta.mPublishTs && typeof plist[key].post.mMeta.mPublishTs === 'object')
? new Date(plist[key].post.mMeta.mPublishTs.xint64 * 1000).toLocaleDateString()
: ''),
]
),
])
Expand Down
7 changes: 5 additions & 2 deletions webui-src/app/chat/chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -406,9 +406,11 @@ const ChatLobbyModel = {
}
names.sort((a, b) => a.localeCompare(b));
this.users = [];
names.forEach((name) => (this.users = this.users.concat([m('.user', name)])));
names.forEach((name) => (this.users = this.users.concat([m('.user', [m('i.fas.fa-user'), name]))));
this.userCount = m('.user-count', names.length + ' member' + (names.length !== 1 ? 's' : ''));
} else {
this.users = [m('.user', detail.lobby_name)];
this.userCount = null;
}
m.redraw();
};
Expand Down Expand Up @@ -691,7 +693,8 @@ const LayoutSingle = () => {
[
m('textarea.chatMsg', {
placeholder: 'Type a message...',
enterkeyhint: 'send',
enterkeyhint: 'send',,
inputmode: 'emoji',
onkeydown: (e) => {
if ((e.key === 'Enter' || e.keyCode === 13) && !e.shiftKey) {
const msg = e.target.value;
Expand Down
31 changes: 20 additions & 11 deletions webui-src/app/forums/forums_util.js
Original file line number Diff line number Diff line change
Expand Up @@ -236,19 +236,28 @@ const SearchBar = () => {
let searchString = '';
return {
view: (v) =>
m('input[type=text][id=searchforum][placeholder=Search Subject].searchbar', {
value: searchString,
oninput: (e) => {
searchString = e.target.value.toLowerCase();
for (const hash in Data.DisplayForums) {
if (Data.DisplayForums[hash].name.toLowerCase().indexOf(searchString) > -1) {
m('.searchbar-container', [
m('input[type=text][id=searchforum][placeholder=Search Subject].searchbar', {
value: searchString,
oninput: (e) => {
searchString = e.target.value.toLowerCase();
for (const hash in Data.DisplayForums) {
Data.DisplayForums[hash].isSearched = searchString === '' || Data.DisplayForums[hash].name.toLowerCase().indexOf(searchString) > -1;
}
},
}),
m('button.searchbar-clear', {
title: 'Clear search',
style: 'display: ' + (searchString ? 'inline-block' : 'none'),
onclick: () => {
searchString = '';
for (const hash in Data.DisplayForums) {
Data.DisplayForums[hash].isSearched = true;
} else {
Data.DisplayForums[hash].isSearched = false;
}
}
},
}),
m.redraw();
},
}, m('i.fas.fa-times')),
]),
};
};
function popupmessage(message) {
Expand Down
32 changes: 23 additions & 9 deletions webui-src/app/network/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,21 @@ const SearchBar = () => {
oninput: (e) => {
searchString = e.target.value.toLowerCase();
for (const id in Data.gpgDetails) {
if (Data.gpgDetails[id].name.toLowerCase().indexOf(searchString) > -1) {
Data.gpgDetails[id].isSearched = true;
} else {
Data.gpgDetails[id].isSearched = false;
}
Data.gpgDetails[id].isSearched = searchString === '' || Data.gpgDetails[id].name.toLowerCase().indexOf(searchString) > -1;
}
},
}),
m('button.searchbar-clear', {
title: 'Clear search',
style: 'display: ' + (searchString ? 'inline-block' : 'none'),
onclick: () => {
searchString = '';
for (const id in Data.gpgDetails) {
Data.gpgDetails[id].isSearched = true;
}
m.redraw();
},
}, m('i.fas.fa-times')),
};
};

Expand All @@ -123,9 +130,15 @@ const FriendsList = () => {
oninit: () => {
Data.refreshGpgDetails();
},
view: () =>
m('.widget', [
m('.widget__heading', [m('h3', 'Friend nodes'), m(SearchBar)]),
view: () => {
const onlineCount = Object.values(Data.gpgDetails).filter(p => p.isOnline).length;
const totalCount = Object.keys(Data.gpgDetails).length;
return m('.widget', [
m('.widget__heading', [
m('h3', 'Friend nodes'),
m('span.friend-count', `(${onlineCount} online / ${totalCount} total)`),
m(SearchBar),
]),
m('.widget__body', [
Object.entries(Data.gpgDetails)
.sort((a, b) => {
Expand All @@ -136,7 +149,8 @@ const FriendsList = () => {
return m(Friend, { id });
}),
]),
]),
]);
},
};
};

Expand Down
62 changes: 35 additions & 27 deletions webui-src/app/people/people_util.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,22 +74,28 @@ const SearchBar = () => {

return {
view: () =>
m('input.searchbar', {
type: 'text',
placeholder: 'search',
value: searchString,
oninput: (e) => {
searchString = e.target.value.toLowerCase();

rs.userList.users.map((id) => {
if (id.mGroupName.toLowerCase().indexOf(searchString) > -1) {
id.isSearched = true;
} else {
id.isSearched = false;
}
});
},
}),
m('.searchbar-container', [
m('input.searchbar', {
type: 'text',
placeholder: 'search',
value: searchString,
oninput: (e) => {
searchString = e.target.value.toLowerCase();
rs.userList.users.map((id) => {
id.isSearched = searchString === '' || id.mGroupName.toLowerCase().indexOf(searchString) > -1;
});
},
}),
m('button.searchbar-clear', {
title: 'Clear search',
style: 'display: ' + (searchString ? 'inline-block' : 'none'),
onclick: () => {
searchString = '';
rs.userList.users.map((id) => { id.isSearched = true; });
m.redraw();
},
}, m('i.fas.fa-times')),
]),
};
};

Expand Down Expand Up @@ -143,17 +149,19 @@ const regularcontactInfo = () => {
: 'undefiend'
),
]),
m(
'button',
{
onclick: () =>
m.route.set('/chat/:userid/createdistantchat', {
userid: v.attrs.id.mGroupId,
}),
},
'Chat'
),
m('button.red', {}, 'Mail'),
m('.identity-actions', [
m(
'button',
{
onclick: () =>
m.route.set('/chat/:userid/createdistantchat', {
userid: v.attrs.id.mGroupId,
}),
},
m('i.fas.fa-comment')
),
m('button.red', {}, m('i.fas.fa-envelope')),
]),
]
),
};
Expand Down
10 changes: 10 additions & 0 deletions webui-src/styles.css

Large diffs are not rendered by default.