Skip to content

Releases: dashchan-redacted/client

26.8.2

Choose a tag to compare

@github-actions github-actions released this 08 Aug 06:33
  • Commands: the list gets tabs by target and a search over them — swipe between the tabs, reorder within one — an App command run from the ⌘ spins in the button instead of a dialog over the page, with a double tap to call the run off, a dialog's text can be selected and copied, and chan.changeVisibleIp() no longer times out while the command it asked for quietly succeeds.
  • Bans: one toast for a ban, carrying both Change it and Details, instead of two saying different things about it.
  • "Proxy for sending only" covers votes, deletions, archiving and logins too, along with the captcha each needs. Only browsing goes direct.
  • Captcha: a loading line across the block instead of a spinner squeezed into the middle of it.
  • The floating bar no longer stands over the last item of a list.
  • An attachment-only post gets the same space below it as beside it.

26.8.1

Choose a tag to compare

@github-actions github-actions released this 07 Aug 01:24
  • Posting: the submission form is a sheet over the thread it replies to instead of replacing it. Drag it down to half height or swipe it away to read the posts you are answering, with the captcha and the send button pinned at the bottom at whatever height it settled at. The full-screen form is still there as User interface → "Classic style".
  • Posting: the form reuses the captcha you just solved instead of solving a reCAPTCHA or hCaptcha again on every open. The reuse window is two minutes — that is how long such a token is actually valid.
  • A small bar floating in the bottom corner carries a thread's Reply and Contents and a board's New thread and Refresh, plus a ⌘ for the App commands the forum and board are in scope of. Long press and drag reorders the buttons, a two-finger tap turns the bar between horizontal and vertical, and an item the page hides is no more in the bar than in the toolbar.
  • Captcha: reCAPTCHA 3. Version 3 shows no challenge — it scores the client behind the page — so the token is minted in the background, inside the site's own page with its cookies and history, and reported as a solved captcha. Extensions pass the action the token is minted under per request.
  • Every forum keeps a ban log: each post refused as banned is stored with its board, reason, expiration and the address the forum saw at the time, under "Ban log" in that forum's Additional section. Before a fresh captcha is requested the log is asked whether the current address is already banned on that board, so none is spent on a post that will only be refused again.
  • Visible IP: flag a command "Run to change visible IP" for a forum and the address row names it, with a button that runs it — from the forum's settings, from the toast a banned post puts up, or from a script — dropping the pooled connections afterwards. No proxy service has any code in the app: ready-made commands for Asocks and DataImpulse ship in docs/commands, with credentials kept in the command environment.
  • A forum's proxy can be limited to what you send: with "Proxy for sending only", posts and reports — together with their firewall resolution and their captcha — go through the proxy, while browsing, thumbnails and files load directly. A proxy takes a login and a password now.
  • Commands reach app (the application's settings, by the key the settings screens store them under), chan (the forum the run belongs to and its cookies — the same store "Manage cookies" edits) and store (the command's own key→value store), each granted per command in its editor. The IP a forum sees and the proxy its traffic takes are granted apart, being the one thing here that reaches off the device.
  • Commands can put a question to the user: show, confirm, prompt, choose and chooseMany raise a dialog mid-run and hand back what was chosen, or null for one that was cancelled. alert, confirm and prompt are bound to the same dialogs — until now a WebView cancelled every one, so confirm() answered "no" without ever asking.
  • Commands gain an App target, for a script that operates on nothing and does its work through what it was granted; it runs from the Commands screen, and it is what the app runs when it needs another visible IP. Behind the proxy grant a script can read the IP and location a forum sees, read and write that forum's proxy as one connection string, and ask for the visible-IP command to be run.
  • Toasts stack instead of covering one another, up to three, so a warning landing after a failure no longer takes its Details button away.
  • 4chan hands out captchas again. A header's case is the protocol's choice rather than the server's — HTTP/2 requires lowercase — so lookups written in the familiar spelling (CF-RAY, Server, Content-Type) silently found nothing on exactly the hosts modern enough for HTTP/2, leaving a Cloudflare challenge unrecognised. Its "Verification Required" title is recognised too.
  • A forum's Connection settings take a User-Agent of their own; left empty, the WebView default is kept.
  • References to deleted posts are links now: a bare >>NNN the forum emitted as plain greentext is linkified and marked X, and tapping it opens the thread's last-seen copy instead of a single-post fetch that would 404.
  • Threadshots no longer crash on a post carrying a country flag or an extension's decorator icon.
  • Extensions: a drag-slider captcha — the user drags a puzzle piece across a background image — and a TAG_SECRET markup tag drawn in the theme's capcode colour, with a posting-form button that wraps the selection in it.
  • Ripples take the corner radius of the surface under them, and the ⌘ menu gets its shadow, rows themed to read against their own card, and a width that hugs what is in it.

26.8

Choose a tag to compare

@github-actions github-actions released this 01 Aug 01:57
  • Drafts get a place to be looked through: while any saved drafts exist, an entry in the drawer names them, and a tap opens the list — each row names the thread the draft is for, with the subject and comment (or the attachment count) below. Drafts of a removed extension are kept too, and the cache now holds a thousand instead of five.
  • Error reports: About lists every saved crash report — its date and the line that killed the app — to read, share, copy or delete, and the first start after a crash now says so, with a button that opens the report.
  • Popular: a thread-menu view that re-lists the thread showing only the posts that got replies, most replied first. Hidden posts and their replies drop out of the ranking.
  • Gallery: a Filter bar with two dropdowns — narrow the files to a media type (images, GIF, videos) and sort by post order, file name, size, resolution or type. Each dropdown lists only what the gallery in front of you actually holds.
  • Search every setting from the root of Preferences: a lens in the toolbar finds a title or summary across General, User interface, Contents, Media and each installed forum, then opens the owning screen and pulses the row.
  • Commands: libraries — shared snippets or scripts downloaded from an address that run ahead of a command's body, so two commands can share code. A command can now run on a single post, and a thread command can manage a post's attachments.
  • Audio: one "Use built-in player" switch now covers both audio and video (opt-out), the player asks for notification permission so its controls can actually be reached, plays a track once at the speed you pick, and "Action on playback completion" drives it too. The audio dialog shows timestamps.
  • Favorites: a bump-limited favorite can be followed into its continuation ("Notify only" or automatic), and a board can keep its own watcher interval — up to 5 minutes — overriding the global one.
  • Updates: the APK already installed is no longer offered back as an update, and two addresses that serve the same manifest are merged into one source instead of listing every extension twice.
  • Video: recovers from more playback errors — falls back to the software decoder for off-spec streams, seeks constant-bitrate audio correctly, and plays a clip cut off at the tail instead of erroring on the first frame.
  • An invisible reCAPTCHA is now solved without asking for a tap (General → Services → "Solve invisible reCAPTCHA").
  • Extensions can decorate a post — draw their own view in a slot below the comment and add menu entries and actions to it (e.g. post reactions), instead of reaching into the app by reflection.
  • A forum's Connection settings gain a "Visible address" row: the IP and location Cloudflare reports as what that forum sees for you, fetched through the forum's own proxy and HTTPS settings, so you can tell whether a proxy or Tor is really carrying its traffic. The update repositories are named after what they hold.
  • Posting: dropped the confirmation header above the captcha and send block.
  • The Cloudflare/firewall challenge no longer takes over the whole window — it is sized to two-thirds of the screen and pinned to the top, so the page waiting on it stays in view underneath.
  • Spacing polish across the post list, all three thread views, the gallery controls and the drawer popups.

26.7.9

Choose a tag to compare

@github-actions github-actions released this 26 Jul 22:36
  • Theme editor: create a theme or edit an existing one from the Themes screen, with every colour slot on an HSV picker and a live thread preview above the list. Long-press a theme to duplicate it, copy its JSON or edit it.
  • A new theme set replaces the old one: Claude, Dracula, Gruvbox, Nord, Obsidian, Sepia, Solarized Light, Solarized Dark and Yotsuba
  • Echo: replies to your posts are collected in a screen of their own instead of living only in a notification you can dismiss. Unread replies are highlighted, the drawer entry carries the unread count, and reply notifications open it. Can be turned off in Contents.
  • Material redesign driven by a single "UI corner radius" setting in User interface: dialogs, popups, menus, grid cards, toasts and row highlights all follow it. Switches, sliders and chips now take their colours from the active theme.
  • Commands can now run against a thread: the script receives its posts and replaces their comments in place — enough to decrypt or translate a thread for whoever holds the key — on demand from the thread menu, or automatically when the thread opens. "Process posts individually" hands the script one post at a time.
  • Commands: a shared environment (NAME=value per line, read from a script as env.NAME), a full-screen code editor with JavaScript highlighting and a symbol ribbon, import from a post's text, add or save as JSON, duplicate, and drag to reorder.
  • Video: added 0.33x, 4x, 5x, 6x and 8x playback speeds; the current speed now survives picture-in-picture in both directions, and the side controls got a dark halo so they stay readable over light frames
  • The text formatting buttons can be placed below the comment field instead of under the toolbar (User interface → Posting)
  • The captcha block is hidden when a captcha pass makes it pointless
  • Double tap the toolbar on a board or thread to hide its title and subtitle
  • A favorite renamed by hand now shows its custom name in the thread header too
  • Image search is down to Google Lens and Yandex
  • Fixed restore rejecting a valid backup, and a backup taken with no themes or commands erasing them on restore
  • Fixed the send button sitting below the visible edge of an empty posting form
  • Fixed the attachment and gallery menus coming out dark and square on a light theme
  • The changelog lists every version on its own instead of grouping patch releases
  • Renamed to Dashchan [redacted], with a new launcher icon and a Feedback button in About

26.7.8

Choose a tag to compare

@github-actions github-actions released this 23 Jul 15:38
  • Commands: user-defined JavaScript that transforms the posting form. Create scripts scoped to all forums or a specific board (like Autohide rules), run them by hand from the ⌘ button in the comment field or automatically before every send. Included in backup and restore.
  • Reels-style video controls: a bottom-right column with mute, playback speed and picture-in-picture buttons. Mute is remembered across videos; the available playback speeds are configurable in Media settings. Tap the left or right side of a video to seek 5 seconds per tap.
  • Attachments can now be reordered by long-pressing and dragging them before sending
  • The open board, thread and back stack are restored after any exit — swipe-away, low-memory kill or reboot — not just an in-app restart
  • 2ch AI-bot (@monkey / neuroslop) answers now render as a quote block with an accent bar instead of a flat highlight
  • Maximizing a picture-in-picture window returns to the real player at the current position; closing or dragging it away simply closes
  • Fixed a brief burst of sound that could leak after a video was closed
  • Long-pressing in the bottom gesture strip (Circle to Search / Lens) no longer also opens the gallery context menu
  • Raised the media cache size defaults for modern devices
  • Removed the legacy non-SAF download path and the internal/external cache-storage toggle, both obsolete on the current target
  • "Archive" as an action is now worded distinctly from a board's archive

26.7.7

Choose a tag to compare

@github-actions github-actions released this 17 Jul 02:27
  • Customizable swipe action on posts in a thread: swipe right-to-left to reply, copy or share, chosen in Interface → Posts list → Swipe action on post
  • Optional day/night theme switch following the OS setting, with a separate theme for each (off by default)
  • In-app transitions now animate with the back gesture
  • Links open in a Custom Tab instead of the internal WebView browser, with an optional ephemeral (incognito) mode that keeps no history or cookies
  • Sharing text from another app now saves it as a draft instead of failing with "unknown address"
  • Smoother scrolling on 90-120 Hz displays: the main-thread work budget follows the actual refresh rate instead of assuming 60 Hz
  • Thumbnails already in the disk cache appear immediately instead of after a 500 ms delay
  • Fixed "Seek any frame", which had its meaning inverted and degraded seek accuracy when enabled
  • Fixed several crashes left by the Java→Kotlin conversion, including search grouping on posts without a thread number
  • The retired Webm library extension is no longer loaded or offered: the video player is built in
  • Extension updates are read from the dashchan-pixel/extensions repository

26.7.6

Choose a tag to compare

@github-actions github-actions released this 13 Jul 20:07
  • The entire app is now written in Kotlin (26.7.5 was the last release with Java code)
  • Fixed crashes introduced by the Kotlin conversion: saving media, failed post send, opening threads and pages of the local chan, gallery dialog menu
  • HTTP errors without a status message now show the status code instead of "unknown error"

26.7.5

Choose a tag to compare

@github-actions github-actions released this 11 Jul 03:37
  • Two app icons to choose from in the interface settings (gradient or striped); all icons are vector now
  • Post dates always include the year
  • Update sources reworked: the client updates from its own repository; extension update sources are configurable and can be combined
  • Fixed the changelog viewer: wrong source repository and wrong language selection for locales like en-PL
  • Removed the obsolete "Wi-Fi or 3G+" network mode
  • Removed long-deprecated extension API methods (extensions from before 2020 may stop working)