justme
d1ff8bab7d
feat(web): role groups, last seen and unread markers in members, channels and spaces; lock channels without keys
2026-10-17 21:31:15 +08:00
justme
5043c798ff
feat(server): member last seen and a live per-account space activity stream
2026-10-17 21:31:15 +08:00
justme
78b4e2aa63
fix(server): trim every workspace structure response to the caller's grants and restrict avatars to shared spaces
...
- structure mutations returned the full structure to any member who could call them (moving an item after sending a message exposed channels the member has no access to)
- moving items now requires write access to the destination channel; new folders require an existing channel
- account avatars are only readable by the owner or accounts sharing a space
2026-10-17 21:31:15 +08:00
justme
d66c93fe98
feat(web): avatar thumbnails with original preview, registration avatar, pure-JS crypto fallback for http [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-17 14:35:42 +08:00
justme
283196938e
feat(web): stream video and audio while decrypting, paste images, 16px inputs on touch
2026-10-17 14:35:41 +08:00
justme
31ae3bc39e
feat(server): lossy avatar thumbnails, gzip upload and separate avatar endpoints
2026-10-17 14:35:41 +08:00
justme
ba0b6c258a
feat(web): space avatars with GIF support and live space list sync [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-17 13:44:16 +08:00
justme
96f92c2ba9
feat(web): inline previews in chat and per-upload download limit choice
2026-10-17 13:44:16 +08:00
justme
1a4069576b
feat(server): space avatars and full member profiles in the structure response
2026-10-17 13:44:16 +08:00
justme
77c9017129
chore: regenerate API contract after role color doc changes [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-17 13:26:38 +08:00
justme
a08aa7568f
feat(web): animated GIF avatars that refresh across chat and member list [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/dev-image unknown status
2026-10-17 13:25:14 +08:00
justme
3b062687cd
feat(web): role colors with picker, Material 3 draw, effects and inline markdown
2026-10-17 13:25:14 +08:00
justme
bef8898cd8
feat(server): owner role group, custom role colors with effects and animated avatars
2026-10-17 13:25:13 +08:00
justme
7ef298f587
fix(web): make cancel, delete and chat work while a file is uploading [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-16 19:51:45 +08:00
justme
1245aedfd2
docs: record how to measure upload speed without the Vite proxy [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-16 19:42:33 +08:00
justme
a574583943
feat(web): space roles, upload queue with pipelined frames, background resume and faster sending
2026-10-16 19:42:33 +08:00
justme
96c4335cb5
feat(api): count upload frames separately and send Retry-After when rate limited
2026-10-16 19:42:33 +08:00
justme
82d55a97f9
fix(api): let authors and owners delete unfinished uploads
2026-10-16 19:42:33 +08:00
justme
1dd54243ae
feat(api): add space roles with delegated member removal and structure management
2026-10-16 19:42:31 +08:00
justme
059a29a8d5
feat(web): ask for a display name when creating an account [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-16 18:30:59 +08:00
justme
915992776d
feat(web): show the space validity period in the top bar
2026-10-16 18:30:59 +08:00
justme
6d6490055e
feat(web): tidy the channel sidebar and let owners delete groups
2026-10-16 18:30:58 +08:00
justme
6310f93469
fix(web): verify deletions against the signer and read crypto state afresh
2026-10-16 18:30:58 +08:00
justme
fc1dc08ebe
feat(api): delete workspace groups and record who signed a content event
2026-10-16 18:30:58 +08:00
justme
55f1b70d89
feat(web): crop avatars in the browser with a live message preview [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-16 17:54:32 +08:00
justme
18c871ec85
feat(web): use the Material settings gear and add rotate icons
2026-10-16 17:54:32 +08:00
justme
18185c5bd9
refactor(web): drop the settings entry from the space header
2026-10-16 17:54:32 +08:00
justme
b847916a5b
feat(web): group space settings into basic, content and join tabs
2026-10-16 17:54:31 +08:00
justme
79bfd560cb
feat(web): call the login name the account ID and list sign-up requirements
2026-10-16 17:54:31 +08:00
justme
700be2ebae
fix(storage): retry a read transaction that fails to begin under load
2026-10-16 17:54:30 +08:00
justme
fb5800f81d
fix(web): show the author of incoming messages right away [CI]
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/dev-image unknown status
Messages from other members or devices used to render as an unknown member
until the space structure refreshed. Use the author account the server
records for the object, together with the loaded profiles, when the item
arrives.
2026-10-16 07:04:31 +08:00
justme
12980ba6fe
docs: describe login-only spaces and the 8.0.0 contract [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-16 06:46:16 +08:00
justme
8233369cd4
feat(web)!: sign in before joining a space and drop the stranger option
...
Opening a space link while signed out shows the sign-in page first and keeps
the link in memory. The channel settings no longer offer the stranger switch,
and the client supports API contract major 8.
2026-10-16 06:46:15 +08:00
justme
c858bd2a09
feat(server)!: require a logged-in account for every channel request
...
Drop unauthenticated guests from channels: the allow_guests setting, the
/guests endpoints and the guest seat table are gone, and requests without an
account session get 401 account_required. Share links are unaffected.
Contract version is now 8.0.0.
2026-10-16 06:46:15 +08:00
justme
b1ac11e1d7
perf(web): shorten the cold start when opening a saved space
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
Activate the account with parallel requests, run the full vault sync in the
background, skip the duplicate space list request, and send the rejoin
together with the first screen of data. [CI]
2026-10-16 06:00:17 +08:00
justme
f2e118c966
perf(server): compress JSON and frontend responses with brotli or gzip
2026-10-16 06:00:16 +08:00
justme
d77ca1f113
perf(web): reuse cached crypto state and structure when decrypting and sending
...
Decrypting each history item no longer refetches the whole crypto state, and
sending a message only needs the object and frame requests.
2026-10-16 06:00:16 +08:00
justme
593eeba18e
docs(ui): describe the loading skeleton [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-16 05:44:58 +08:00
justme
22f272e361
feat(web): show a skeleton while a space loads
...
Draw the page frame instead of a blank screen, fade it in only after 300ms,
and surface load errors with retry and back-to-home actions.
2026-10-16 05:44:58 +08:00
justme
e79fbf1112
docs(ui): describe the phone chat shell [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-16 05:34:38 +08:00
justme
1db3795d6a
feat(web): open spaces as a plain chat on phones with a side drawer
...
Spaces, channels, files, members and the account move into a left drawer,
the top bar keeps only the essentials, and touch devices get a tap menu
instead of always-visible delete buttons. Also fixes the history checkboxes
in the channel settings sheet.
2026-10-16 05:34:38 +08:00
justme
06fe077ef1
perf(web): shorten the first open of a space for new members
...
Accepting an invitation no longer waits for the vault sync, the redundant
join right after joining is skipped, and the crypto state, first log page and
channel metadata are requested in parallel.
2026-10-16 05:34:38 +08:00
justme
d4a72bf177
docs(ui): describe account settings, sign-in and the home zones [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-14 22:42:06 +08:00
justme
d0aefb3d6e
feat(web): split the home page into quick share and spaces zones
...
Two side-by-side zones (stacked on narrow screens) with an icon and a
one-line positioning each: quick share is temporary, read-only and needs
no account; spaces are long-lived, multi-user and need a login. Shorter
copy, my shares listed under the share input, and an empty state for
spaces.
2026-10-14 22:42:06 +08:00
justme
0d31e3d058
feat(web): redesign account settings and the sign-in page
...
- account settings: sidebar sections (profile, devices, security,
invitations, sync and sign-in) instead of one long scroll; inline device
rename, confirmations for destructive actions and toast feedback
- sign-in/register: split layout with a quiet brand column, text tabs and
underlined inputs; registering asks for the password twice and explains
that it cannot be recovered
- move invitation accept/label helpers into store/invitations so the
toast and the settings inbox share them
- add the home page zone styles used by the next commit
2026-10-14 22:42:06 +08:00
justme
4b8d0b5a5f
feat(web): discord-style chat, members pane, invitations and optimistic send [CI]
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
- chat: left-aligned discord-style messages with grouped senders, hover
actions, an auto-growing composer and file cards
- send: render messages and files locally first and replace the
placeholder when the worker publishes the real item; failures keep the
text with a retry action
- navigation: space rail plus a flatter channel list with the space name
header and collapsible groups
- members: right pane tabs (files / members) grouped by online, offline
and pending users, with a prominent invite action and a top bar shortcut
- notifications: toast host for invite results; invitees get a toast with
an accept action, and the invitation payload now carries the space name
and inviter inside the encrypted grant
- users over devices: drop device names, the device list and device
rename/release; senders show the account (guests show as guest) and the
share panel only keeps links
- follow contract 7.0.0 (max_members, members_used, members_full, /join)
- docs: ui-design and frontend updated for the new layout and concepts
2026-10-14 22:19:25 +08:00
justme
5fd4ddd411
refactor(core): drop per-terminal device labels
...
Remove sealLabel/openLabel and their label constants; devices are no
longer named per channel. Rename the create setting seats to
max_members and point the e2e join helper at POST /join.
2026-10-14 22:19:24 +08:00
justme
d946fc5e8a
feat(api)!: fold devices into users and report member presence
...
Contract 7.0.0 (breaking). Devices become an attribute of the account;
members are managed per user, and only unauthenticated guests keep a
per-terminal registration.
- rename seats -> max_members, seats_used -> members_used,
seats_full -> members_full, SeatJoined -> JoinResult, the `seats`
stream control message -> `members`, and POST /channels/{id}/seats ->
POST /channels/{id}/join (stored channel settings are migrated on start)
- drop per-terminal encrypted device labels and the seat list/release
endpoints; add GET/DELETE /channels/{id}/guests for guest terminals
- authenticate account members by account session only: the terminal key
is optional for logged-in accounts, no seat row is written for them,
and gated-download grants are counted per user (per terminal for guests)
- GET /channels/{id}/members now returns online, devices and
online_devices per account; presence is tracked in memory from active
WebSocket/SSE subscriptions and is not pushed over the stream
- owner invitation list no longer returns accounts that already joined
2026-10-14 22:18:59 +08:00
justme
0fd2a269d9
Merge pull request 'feat(files): add per-channel storage quota [CI]' ( #2 ) from feat/channel-storage-quota into master
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-14 05:42:56 -07:00
justme
a6f078d009
feat(files): add per-channel storage quota [CI]
ci/woodpecker/pr/web-build Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-10-14 20:42:08 +08:00
justme
441ed0e5f0
Merge pull request 'feat: add account workspaces and signed content events' ( #1 ) from feat/account-workspace-signatures into master
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-10-14 05:29:35 -07:00
justme
fe39b30332
fix(core): satisfy strict signature test typing
ci/woodpecker/pr/web-build Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-10-14 20:28:52 +08:00
justme
58506f82de
docs: describe workspace signing boundaries
ci/woodpecker/pr/web-build Pipeline failed
ci/woodpecker/pr/ci Pipeline was successful
2026-10-14 04:06:29 +08:00
justme
b5cf3d5958
feat(web): add account workspaces and signed content flows
2026-10-14 04:06:03 +08:00
justme
7b8d61d1ba
feat(api): add account workspaces and signed content events
2026-10-14 04:05:30 +08:00
justme
937b774a93
test(web): cover workspace and file interaction workflows
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-10-13 01:39:26 +08:00
justme
c2ea1b7f64
docs: consolidate account workspace architecture
2026-10-13 01:39:25 +08:00
justme
b65e32885f
feat(auth): remember encrypted local login credentials
2026-10-13 01:39:24 +08:00
justme
f6cfb12716
feat(web): add spaces, grouped channels and file chat
2026-10-13 01:39:23 +08:00
justme
c7d8ef15bc
feat(api): bind encrypted workspaces to accounts and devices
2026-10-13 01:38:19 +08:00
justme
019b15041a
build(deploy): switch hosting to Podman Quadlet
2026-10-13 01:38:18 +08:00
justme
10aa0304e4
feat(web): separate build sources and localize time
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-10-12 16:50:15 +08:00
justme
89cd92f7ee
feat(web): show build info and theme menu [CI]
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-12 16:40:50 +08:00
justme
98a5e67f82
ci: reuse NativeAOT build image [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-12 02:09:50 +08:00
justme
b9c620304c
fix(ci): stabilize oversized body check [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was canceled
2026-10-12 01:58:41 +08:00
justme
9f02a17c85
ci: align Zot login with MoShiro [CI]
ci/woodpecker/push/web-build Pipeline failed
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/dev-image unknown status
2026-10-12 01:56:08 +08:00
justme
d570435236
ci: use Zot API key at registry.oeo.one [CI]
ci/woodpecker/push/web-build Pipeline failed
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/dev-image unknown status
2026-10-12 01:54:25 +08:00
justme
fd01120d3a
ci: gate development images on checks [CI]
2026-10-12 01:47:24 +08:00
justme
c0d155c608
fix: stabilize mobile uploads and show transfer speed
2026-10-03 01:37:43 +08:00
justme
09d66092f5
ci: fix latest image tag publishing commands
ci/woodpecker/push/ci Pipeline failed
2026-10-02 06:21:04 +00:00
justme
ca62b9dd6e
ci: publish latest image tag on release
ci/woodpecker/push/ci Pipeline failed
2026-10-02 06:20:05 +00:00
justme
c68acfd78b
fix: allow embedded worker API requests
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/tag/release-backend Pipeline was successful
2026-10-02 14:12:14 +08:00
justme
10ea48bf04
fix: clarify quick share creation failures
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/tag/release-backend Pipeline was successful
2026-10-02 13:44:03 +08:00
justme
fbe6abd519
feat: embed frontend in backend
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/tag/release-backend Pipeline was successful
2026-10-02 13:11:10 +08:00
justme
22f9bcfa46
ci: reuse Buildah layers for backend releases
ci/woodpecker/push/ci Pipeline was successful
2026-10-02 05:02:03 +00:00
justme
46974b120e
ci: cache and prefetch WebDrop dependencies
ci/woodpecker/tag/release-backend Pipeline was successful
2026-10-02 04:18:48 +00:00
justme
3332e7bbcf
ci: cache and prefetch WebDrop dependencies
2026-10-02 04:18:41 +00:00
justme
a182043970
ci: cache native image build dependencies
ci/woodpecker/manual/ci Pipeline failed
ci/woodpecker/manual/release-backend Pipeline was canceled
2026-10-02 11:51:56 +08:00
justme
2150849529
ci: use host network for Buildah image build
ci/woodpecker/manual/ci Pipeline was successful
ci/woodpecker/manual/release-backend Pipeline was successful
2026-10-02 11:39:48 +08:00
justme
dde7beee15
ci: publish releases through internal Zot endpoint
ci/woodpecker/manual/ci Pipeline was successful
ci/woodpecker/manual/release-backend Pipeline failed
2026-10-02 11:37:24 +08:00
justme
dd6ab78353
ci: checkout tagged source for manual releases
ci/woodpecker/manual/release-backend Pipeline failed
ci/woodpecker/manual/ci Pipeline was successful
2026-10-02 11:34:30 +08:00
justme
9964b4e3ad
ci: allow manual semver image publishing
2026-10-02 11:33:34 +08:00
justme
65ae850c0c
docs: note native Woodpecker runner requirements
2026-10-02 11:18:18 +08:00
justme
3abac991f0
fix(storage): defer concurrent SQLite read transactions
ci/woodpecker/manual/ci Pipeline was successful
2026-10-02 11:12:05 +08:00
justme
6339f6728d
ci: align workflows with native Woodpecker agents
ci/woodpecker/manual/ci Pipeline failed
2026-10-02 11:08:51 +08:00
justme
b548d1c71d
ci: clone WebDrop using private public-host secret
ci/woodpecker/manual/ci Pipeline failed
2026-10-02 11:05:19 +08:00
justme
8d8d4fd5b7
ci: clone repository from public Git URL
ci/woodpecker/manual/ci Pipeline was canceled
2026-10-02 11:01:16 +08:00
justme
58095ae25b
ci: support manual validation runs
ci/woodpecker/manual/ci Pipeline failed
2026-10-02 10:55:44 +08:00
justme
b0af858a18
ci: publish backend release tags to zot
2026-10-02 10:54:22 +08:00
justme
7406e2fe37
feat: integrate client and server sharing workflows
2026-10-02 10:49:45 +08:00
justme
42b93ae2d8
feat(server): implement sealed share lifecycle
...
Signed-off-by: JustMe <mr.toing@outlook.com >
2026-10-02 00:59:56 +08:00
justme
e02e024605
feat(web): connect quick share flow
...
Signed-off-by: JustMe <mr.toing@outlook.com >
2026-10-02 00:59:37 +08:00
justme
53768a195d
chore(repo): initialize WebDrop monorepo
...
Signed-off-by: JustMe <mr.toing@outlook.com >
2026-10-02 00:59:22 +08:00