v0.4.0 f6d8405

2026-10-12

f6d8405Merge pull request 'feat(deploy): run pdraim as a Node container on Gordon' (#2) from feat/gordon-container into main merge SSH Unverifiedmain tag v0.4.0bnema
fb18f06ci: rerun checks after npm registry timeout SSH Unverifiedfeat/gordon-container Kit
c76e7e6fix(deploy): harden the Node container after review SSH UnverifiedKit
5d60e39docs(readme): document X-Real-IP as the client address header SSH UnverifiedKit
af344e1feat(deploy): run as a Node container image instead of Cloudflare Pages SSH UnverifiedKit
86d866dchore(deps): update minor and patch dependencies SSH UnverifiedKit

2026-10-10

3611559Merge pull request 'feat(aim): AIM desktop experience' (#1) from feat/aim-desktop-experience into main merge SSH Unverifiedbnema

2026-09-29

1e972f6docs(sounds): keep WAV next to FLAC as a decoding fallback SSH Unverifiedfeat/aim-desktop-experience Kit
665a02efeat(sounds): accept lossless FLAC samples first SSH UnverifiedKit
f4b3b19chore(headers): cache AIM sounds and smileys for one month SSH UnverifiedKit
c7334b4fix(chat): limit visitors to the last 50 General messages on the server and make history paging members-only SSH UnverifiedKit
dcb7d15fix(sign-on): reset welcome state on cancel and report a failed cancel logout SSH UnverifiedKit
d17e56dfix(aim): count only incoming unread IMs with an index range scan SSH UnverifiedKit
a826f44fix(desktop): cancel sign-on for real, dedupe General tab, keyboard tab close, shared sound and timestamp prefs SSH UnverifiedKit
cc5d0b4fix(aim): keep away status across presence heartbeats and count unread IMs up to 99+ SSH UnverifiedKit
1c1c842fix(aim): keep session cookie when logout fails and hide others' direct rooms from getChatRooms SSH UnverifiedKit

2026-09-27

7a8fd7bfix(chat-room): restore offline users below the people list with last-seen tooltip SSH UnverifiedKit
10bef9dfix(toolbar): compact square B/I/U and color buttons so the toolbar fits on one line SSH UnverifiedKit
e948ac3fix(color-picker): render dropdown fixed above windows so it is not clipped SSH UnverifiedKit
d89cabffix(buddy-list): drop duplicate running man next to own nickname SSH UnverifiedKit
7e3029frefactor(aim): remove emoji buddy icon presets SSH UnverifiedKit
e2dff43fix(toolbar): center smiley picker trigger icon SSH UnverifiedKit
da04fc0feat(aim): classic AIM yellow smileys with picker in rooms and IMs SSH UnverifiedKit
a2d83fbfix(chat-room): drop redundant room header bar, topic moves to tab tooltip SSH UnverifiedKit
6750577feat(chat-room): open rooms as XP tabs in a single Salon window SSH UnverifiedKit
cb6b0affix(desktop): XP inputs, inline away presets, docked buddy list, compact send button SSH UnverifiedKit
824e236feat(taskbar): original XP Luna start button bitmap and taskbar gradient SSH UnverifiedKit
c4d09f0feat(chat-room): authentic AIM people list and XP-style registration notice SSH UnverifiedKit
8702b01fix(xp-window): comfortable 30px title bar with XP-sized controls SSH UnverifiedKit
72abcb1fix(sign-on): resize the window per tab instead of scrolling SSH UnverifiedKit
fea78ddfeat(desktop): use the AIM 5.x pixel running man for the PDR AIM icon SSH UnverifiedKit
1680028feat(desktop): use authentic AIM 5.x and Windows XP icons, tone down chat room header SSH UnverifiedKit
d7110acfeat(desktop): reuse the original running-man icon, XP-style desktop icons, drop legacy login window SSH UnverifiedKit
a2662b9fix(aim): enforce direct-room membership in Convex queries, skip message query until room id, harden logout SSH UnverifiedKit
995a83fdocs(sounds): document local AIM sample drop-in folder SSH UnverifiedKit
b04c358feat(desktop): AIM desktop experience — buddy list, IM windows, taskbar, sign-on, profiles, away messages SSH UnverifiedKit
2a6dd11feat(aim): add Convex AIM backend, sounds, window manager and XP window shell SSH UnverifiedKit
66b04edMerge pull request #112 from kitpdr/chore/update-minor-patch-deps merge GPG UnverifiedKiT
f8f471bstyle(session): apply Prettier formatting SSH UnverifiedKit
756440cchore(deps): update minor and patch dependencies SSH UnverifiedKit

2026-02-16

00c1a2fMerge pull request #98 from kitpdr/fix/security-and-deps merge GPG UnverifiedKiT
192bd59fix(lint): disable no-useless-assignment for Svelte files SSH UnverifiedKit
f098481Merge branch 'fix/security-hardening' merge SSH UnverifiedKit
d9a9c53fix(ui): scroll chat to bottom on page load and refresh SSH UnverifiedKit
53e8e1efix(security): remove unsafe-eval from CSP script-src SSH UnverifiedKit
77eb01cfix(security): cap authenticated message query limit to 200 SSH UnverifiedKit
d7a3f1ffix(security): validate text preferences with Zod schema before saving SSH UnverifiedKit
5794674fix(security): stop trimming passwords to preserve intentional whitespace SSH UnverifiedKit
d075a17fix(security): add Strict-Transport-Security header SSH UnverifiedKit
00a75bbfix(security): block state-changing requests with missing Origin header SSH UnverifiedKit

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 3

Tags 8

↑↓ moveenter openesc close