Repository navigation
Releases: ewanc26/wolfram
Releases · ewanc26/wolfram
Release list
v0.39.1
Added
wf_xrpc_client_set_proxyadds anatproto-proxyheader to an XRPC client, so a client can address one service through another host (the atproto service-proxying rule). Public fetch calls never carry it. (#196)
Changed
- The vendored
base64urldependency (used for PLC operation signature encoding) is pinned to an immutable commit rather thanmaster, so clean configures resolve identical source until it is deliberately updated. (#198) - Chat (DM) calls are addressed to the account's PDS with
atproto-proxy: <chat did>#bsky_chatrather than dialling the chat service's own host, which the public chat service does not accept. The chat service DID comes fromdescribeServer, falling back todid:web:api.bsky.chat. The moderation WebSocket, which cannot carry the header on its upgrade, still dials the chat service directly. (#196)
v0.36.2
Changed
- I've split
profile_tab.cso the tab names, filters and cycle (wf_profile_tab_name,_filter,_next) can be linked without the agent;wf_agent_get_profile_tab_typedis inprofile_tab_fetch.c. No API change. (#182)
v0.36.0
Added
- I've added
wolfram/profile_tab.h: the Posts, Replies, Media and Likes tabs of a profile (wf_profile_tab_name,_filter,_next) andwf_agent_get_profile_tab_typed, which fetches one page of a tab. Cobalt carried this alone; Indigo had only the Posts tab. (#179)
v0.35.0
Added
- I've added
wolfram/saved_feeds.h:wf_agent_get_saved_feedsreturns the account's saved custom feeds with display names, read tolerantly from the raw preferences (V2, then V1), andwf_saved_feeds_parseis the pure JSON half. Cobalt and Indigo each carried the same ~80 lines. (#177)
Changed
- I've replaced the 36 private copies of
strdupand 38 ofset_stringscattered throughsrc/with onewf_str_dupandwf_str_setinwolfram/util.h, and deleted the copies. Behaviour is the same;wf_str_dupis NULL-safe andwf_str_setleaves the destination alone on an allocation failure, as every copy did. (#176)
Removed
- I've deleted about 1,800 lines of dead code from
src/agent/agent.candpost.c: six blocks under#if 0that said they had moved topost.c,feed.c,graph.candnotification.c, and the helpers only they used. Nothing a caller can see changes. (#175)
v0.34.0
Added
- I've added
wf_agent_set_reply_gateandwf_reply_gate(wolfram/threadgate_postgate.h): the "everyone, followed and mentioned, or nobody" choice as one call, so a client does not build the threadgate rules itself. (#173)
v0.33.0
Added
- I've added
wolfram/attach.h:wf_attach_mime,wf_attach_scan_imagesandwf_agent_upload_image_file, so a client can list the JPEG and PNG files in a folder (withinWF_ATTACH_MAX_BYTES) and upload one as an image embed without carrying its own copy. (#168)
v0.32.0
Added
- I've added
wf_agent_post_thread(wolfram/agent.h): post several texts as a thread, the first as a top-level post and each later one as a reply to the one before it with the first as root, so a client does not have to carry the root/parent bookkeeping. It stops at the first failure and says how many posts went through. (#166)
Fixed
- I've fixed a use-after-free in
wf_xrpc_server_stop: a WebSocket worker that had already left the stream list could still be about to callMHD_upgrade_actionwhen the daemon was stopped and its upgrade handle freed. That was the intermittentrelay_serversegfault on macOS.stop()now waits for such workers. (#164)
v0.31.0
Added
- I've added
wf_muted_list(wolfram/muted_words.h): a fixed-size, allocation-free copy of the account's muted words withwf_muted_list_from_prefs,wf_muted_list_addandwf_muted_list_match, so Cobalt and Indigo stop each carrying the same struct, add function and load from the preferences. (#161)
Changed
wf_muted_words_matchno longer has its own matching rules: it adapts the account's mutedWord towf_mod_match_mute_words, the official client's matcher, so Cobalt, Indigo and the moderation code apply the same rules. The visible difference is that punctuation at the ends of a word is ignored (catnow matchescat.and(cat), still notcat's) and a single character matches as a substring. It still takesnow, so the console's clock decides expiry. (#159)wf_failure_classifyreads aWF_ERR_HTTPwith no HTTP status and no error name as a server failure rather thanother, so a client that only has thewf_status(Indigo's sign-in and feeds) still says the service had a problem. (#160)
v0.30.0
Added
- I've added
wolfram/drag.h:wf_drag_begin,wf_drag_moveandwf_drag_endturn a finger dragged along a list into whole rows to scroll, with the slop that separates a tap from a drag and the carry between frames, so Indigo and Cobalt scroll their feeds by touch with one implementation. Strict C89. (#157)
v0.29.0
Added
- I've added
wolfram/cdn.h:wf_bsky_cdn_url()rewrites acdn.bsky.appimage URL to another preset (avatar_thumbnailis 128 px) and to@jpegor@png. A URL with no format comes back as WebP, whichwolfram/image.hcannot decode, and the full-size presets are far larger than a console can draw; Indigo's avatars failed on both counts. Strict C89, with vectors. (#152)
Fixed
- Decoding a JPEG on a thread made with libctru's
threadCreateno longer crashes the 3DS build. stb_image's thread-local failure reason corrupted memory there, so Indigo's avatar loader died a moment after its first successful decode.wf_image_decode_rgbanow builds stb without thread-local storage. Found by running Indigo in Azahar. (#154)