Skip to content

[pull] master from diygod:master - #75

Open
pull[bot] wants to merge 3448 commits into
workoho:masterfrom
DIYgod:master
Open

pull[bot] wants to merge 3448 commits into
workoho:masterfrom
DIYgod:master

Conversation

@pull

@pull pull Bot commented Jun 3, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull Bot locked and limited conversation to collaborators Jun 3, 2026
@pull pull Bot added ⤵️ pull merge-conflict Resolve conflicts manually labels Jun 3, 2026
TungHaHuy and others added 25 commits October 23, 2026 06:27
* feat(konek): add namespace

* feat(konek): add newest posts route

* fix(konek): type handler response as Data

* fix: move to hn.plus

---------
* feat(route/hotukdeals): add tag route

* fix: drop evaluate-script

---------
The site moved to a new CMS: column pages now load their list through a unit API, and the old recall paths serve the homepage, so the route returned an empty feed. Read the list through that API in a shared helper, read article bodies from #zoom, and map the documented type IDs to their new columns so existing feed URLs keep working.

Closes #23665
Same redesign as the recall route: use the shared list helper and the new article layout, take the publish time from the article page in UTC+8, and replace the retired column IDs, default column, radar rules and logo with the new site's.

Refs #23665
#23666)

Bumps the nix group with 1 update: [nixpkgs](https://github.com/NixOS/nixpkgs).


Updates `nixpkgs` from `fe13242` to `09063bd`
- [Commits](NixOS/nixpkgs@fe13242...09063bd)

---
updated-dependencies:
- dependency-name: nixpkgs
  dependency-version: '09063bd1f2b36fd9fd793c36dfade7bd40a93dfc'
  dependency-type: direct:production
  dependency-group: nix
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Add /theatlantic/author/:id for an author's latest articles. The author page carries the same article river as the section pages, so it reuses the section route's Cloudflare cookie step and article parser, and photo stories keep their pictures and captions.

Closes #23668
* feat(route): add Oaktree Capital insights

* feat(route/oaktree): expose media type in categories

* fix: remove deadcode

---------
* feat(panasonic): add camera and lens firmware feed

* fix: remove deadcode

--------
…23672)

* fix(route/telegram): pass media range limit to iterDownload in bytes

iterDownload counts limit in bytes, but streamDocument passed the number
of 512 KiB blocks. Every Range request therefore stopped after a single
block while Content-Length promised the whole range, so players stalled
and retried on each seek.

* fix: ignore HEAD instead of holding download slot

---------
DataDome now answers the default macOS Chrome header preset with a 401 captcha on the section API, the topic API and article pages, and the arc outboundfeeds fallback returns 404, so every category feed failed. The iOS preset still gets the data from two networks, so use it for those requests.

Refs #23484
The topic API behind the authors and tags feeds no longer returns the topic itself, so reading its name crashed every author feed. Name the feed after the topic in the URL instead.

Refs #23484
Dropping process-only made lock-threads fall back to its default of issues, PRs and discussions. The workflow token has no discussions permission, so the lock job failed with "Resource not accessible by integration" after locking the issues and PRs. List issues and PRs explicitly so discussions stay out, as they were before.
* fix(proxy): fix pac parsing

* feat(proxy)!: drop multi proxy

* feat: pac in playwright

* fix(proxy): cache dispatcher

* fix(proxy): prevent resolver failing if config change

* fix: use agent from undici
…23683)

Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 31.11.2 to 31.11.3.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Changelog](https://github.com/cachix/install-nix-action/blob/master/RELEASE.md)
- [Commits](cachix/install-nix-action@448cde7...75c75c3)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-version: 31.11.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [undici](https://github.com/nodejs/undici) from 8.12.2 to 8.12.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](nodejs/undici@v8.12.2...v8.12.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 8.12.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@j178/prek](https://github.com/j178/prek) from 0.5.6 to 0.5.7.
- [Release notes](https://github.com/j178/prek/releases)
- [Changelog](https://github.com/j178/prek/blob/main/CHANGELOG.md)
- [Commits](j178/prek@v0.5.6...v0.5.7)

---
updated-dependencies:
- dependency-name: "@j178/prek"
  dependency-version: 0.5.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot and others added 30 commits November 3, 2026 08:47
Bumps the cloudflare group with 1 update in the / directory: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).


Updates `@cloudflare/workers-types` from 5.20261030.1 to 5.20261031.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)

---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
  dependency-version: 5.20261031.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: cloudflare
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The sports route reads https://sports.sina.com.cn/others/<type>.shtml
and only works with a type such as volley or swim. The original docs
said so and listed the types, but the v3 migration made `type`
optional, dropped the table and used /sina/sports as the example. That
example requested others/undefined.shtml, which 404s.

Make `type` required again, restore the type table and use
/sina/sports/volley as the example. The volley page also lists some
stories in more than one block (31 of 151 on 2026-11-03), so keep the
first entry per link before fetching articles.
Bumps the eslint group with 1 update in the / directory: [eslint](https://github.com/eslint/eslint).


Updates `eslint` from 10.13.0 to 10.14.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v10.13.0...v10.14.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ing category

The news index (page-data/news/page-data.json) lists every article
since 2018, 393 on 2026-11-03, in no particular order, and the route
fetched the page data of each one. That takes well over a minute on a
cold cache. The newest article, "Terrifier | Everything to Know", also
has no category, so reading `article_category.name` threw and the whole
feed failed.

Sort the index by publication date, fetch the newest 20 by default (or
as many as `limit` asks for), and read the category with optional
chaining.
The route returns works from the last two weeks, and the example asked
for Nature Communications papers in subfield 2604 (Applied
Mathematics). The journal has only 8 such papers in total, the latest
from July 2025, so the example feed was empty almost every time and the
full-route test reported "this route is empty".

Use subfield 1312 (Molecular Biology) in the example and the docs. It
returned 50 works from the last two weeks on 2026-11-03.
The region route's path was `/:region{cn|kr|eu|us|ru|en}/:type?`. Hono
copies the parameter pattern into the route regex as is, so the bare
alternation split the whole regex instead of only the parameter. The
route then matched paths it should not, and dropped `type`:

- /aqara/cn/blog redirected to /aqara/cn/category/news, not blog
- /aqara/us/category/news matched this route and redirected to itself

Wrap the alternation in a non-capturing group. /aqara/cn/blog now
redirects to category/blog, and three-segment paths reach the category
and tag route again.
The collection route's path was
`/:collection{jobs|seminars|conferences|institutions|experiments|journals}/:q?`.
Hono copies the parameter pattern into the route regex as is, so the
bare alternation split the whole regex and the optional query was never
captured: /inspirehep/jobs/postdoc returned the same unfiltered feed as
/inspirehep/jobs.

Wrap the alternation in a non-capturing group, so `q` reaches the
search again ("Jobs: postdoc - INSPIRE").
header-generator resolves a preset's browserListQuery with browserslist and
caniuse-lite. When they name newer versions than header-generator's data has,
a generator for them makes no headers at all, and every request that asks for
generated headers fails with "No headers based on this input can be generated".
The repository pins both through pnpm overrides, which an install of the npm
package doesn't get. Fall back to the same browsers in any version
header-generator knows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Without git, or outside a repository (as installed from npm), every start
printed "git: not found" or "not a git repository".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The npm package is now a magpie (https://github.com/yetone/magpie) plugin,
through exports["./server"] and package.json's magpie field:

- it runs a local RSSHub server (127.0.0.1:1200 by default) as a child
  process of magpie's plugin host, which ends with the host;
- it gives every agent three tools through magpie's MCP server of plugin
  tools: search_routes, lookup_url (RSSHub Radar rules) and get_feed;
- it adds a page to magpie's window that shows the server.

Options: port, publicUrl and env (RSSHub's environment variables, also read
from a .env file in the rsshub folder of magpie's config folder).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.5.0 to 0.5.1.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](SamVerschueren/decode-uri-component@v0.5.0...v0.5.1)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-version: 0.5.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Deku Deals rebuilt its list pages. Each game is now a `.col` inside
`.search-main .browse-cards`, the title is an `h6` inside `.main-link`,
and the cover image sits in a `picture` next to the link. The route
still looked for `.item-grid2 > div.cell`, found nothing and returned
an empty feed.

Select the new cards, read the title from `.main-link h6` and the
image from `picture img`. most-wanted and recent-drops list 36 games
each again, with link, cover and price.
* chore(deps): bump vite from 7.3.1 to 8.3.5

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.3.1 to 8.3.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.3.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.3.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump transitive deps

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(route/bandcamp): add Bandcamp Daily latest articles route

Co-Authored-By: Claude Code <noreply@anthropic.com>

* refactor(route/bandcamp): fetch Bandcamp Daily with ofetch

Co-Authored-By: Claude Code <noreply@anthropic.com>

---------

Co-authored-by: ashi-koki <274328227+ashi-koki@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
The tag pages on news.gamme.com.tw and sexynews.gamme.com.tw now link
each article with a relative path such as /1773549. The route passed
that href to the client as is, which failed with "Failed to parse URL",
and the whole feed went down.

Resolve the href with `new URL(href, baseUrl)`. The 歐派 tag example
lists 10 articles again with body and date.
Shinagawa moved its 食品衛生許可施設一覧 page to
/kenko/eisei/1003077/1003132.html; the old /PC/kenkou/... URL now
redirects there. The page links its monthly CSVs with relative paths
(`../../../_res/...`), and the route resolved them against the old URL,
which gave /PC/_res/... and a 404 for every file, so the Shinagawa feed
and the all-ward feed failed.

Point the Shinagawa source and its docs link at the new page, so the
CSV links resolve to /_res/... again. Shinagawa lists 100 permits again
and the all-ward feed 426. The other wards' pages have not moved.
Le Phocéen rebuilt its site and the chrono page no longer embeds
__NEXT_DATA__, so JSON.parse got an empty string and the route failed
with "Unexpected end of JSON input".

Read the feed cards for title, link, category, image and excerpt. The
cards only show relative times ("il y a 4 heures"), so take the date
from each page's first time[datetime] and the body from
.article-content, keeping the excerpt for video pages, which have none.
The feed lists 30 items again, all dated.
The 空间科学研究与应用 list on cmse.gov.cn still links articles whose
pages the site has removed, such as "今日太空实验室|从咖啡一窥微重力流体
科学研究" (t20230920_54339). Those pages answer 404, and that one error
took down the whole feed; 3 of the 15 newest entries are like this now.

Keep such an entry with its title, link and date from the list when its
page answers 404, as the ff14 route does. Other errors still fail as
before. The list returns 15 entries again, all dated.
The route requested the news list at `index.php?MkBAMkAxQA==`
(2@@2@1@), which rodong.rep.kp now answers with an empty 200 in every
language, so the feed was empty. The site's own "more" link for the
same section is `index.php?MUBAMkAxQA==` (1@@2@1@), and that page has
the same `.date_news_list` rows the route already parses.

Article pages moved to a new template as well: the body is now in
`#ContDIV`, with the headline in `.TitleP` and the byline in
`.WriterP`, and the old `.col-sm-8` column is gone. Read `#ContDIV`
without those two, so quotes, subheadings and inline photos stay. The
Korean feed lists 39 articles again and the English and Chinese feeds 6
each, all with dates and bodies.
Some 弘毅学堂 notices now open a 系统提示 page that says
`暂无权限,请咨询管理员。` in place of the article. The shared detail
helper used by /whu/hyxt and /whu/news only recognised the captcha
page, so these threw "Article body not found" and /whu/hyxt failed.

Treat the no-permission page as a restricted article, the same check
/whu/gs, /whu/rsgis and /whu/swrh already do, so the entry keeps its
list title and date. /whu/hyxt lists 10 notices again, 2 of them
restricted.
yxy.zcmu.edu.cn moved its list pages to a new template: the notices
are now `.sp-list li` rows with the date in `.sp-list-time`, and the
old `.lm_list` is gone, so every channel of the route came back empty.

Read the new rows, and resolve each link with new URL, since the hrefs
are relative (`../info/1078/8687.htm`) and string concatenation gave
`/../info/...` links. 通知公告, 评优评奖 and 日常通知 each list 20
notices again, all dated.
Sogou's result pages no longer have a `.citeurl` block. The source
name and the page date now sit in `a.citeLinkClass`, with the date in
`.cite-date`, so the route read an empty string for every result and
`parseDate('')` gave an invalid date. The weekly full-route test failed
on it with "expected NaN to be greater than -432000000".

Read the site name and date from `.citeLinkClass`, and leave pubDate
unset for results Sogou shows without a date (3 of the 9 results for
"rss" right now) instead of passing an empty string to parseDate.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y once (#23769)

* fix(route/twitter): refresh x-client-transaction keys on 404 and retry once

UserTweetsAndReplies and SearchTimeline send an x-client-transaction-id
generated from keys cached for CACHE_CONTENT_EXPIRE. When X stops
accepting the cached keys it answers 404, and every request fails until
the cache entry expires. Refetch the keys, overwrite the cache and retry
the request once.

* test(route/twitter): remove route test rejected by orphan file check

The route build rejects test files under lib/routes/, which fails the Docker
build and closes the PR automatically.

* Update lib/routes/twitter/api/web-api/client-transaction-id.ts

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

---------
)

Bumps the hono group with 1 update: [hono](https://github.com/honojs/hono).


Updates `hono` from 4.13.14 to 4.13.16
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.13.14...v4.13.16)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.13.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: hono
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [teleproto](https://github.com/sanyok12345/teleproto) from 1.232.0 to 1.232.1.
- [Release notes](https://github.com/sanyok12345/teleproto/releases)
- [Commits](sanyok12345/teleproto@v1.232.0...v1.232.1)

---
updated-dependencies:
- dependency-name: teleproto
  dependency-version: 1.232.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the msw group with 1 update: [@mswjs/interceptors](https://github.com/mswjs/interceptors).


Updates `@mswjs/interceptors` from 0.45.10 to 0.45.11
- [Release notes](https://github.com/mswjs/interceptors/releases)
- [Commits](mswjs/interceptors@v0.45.10...v0.45.11)

---
updated-dependencies:
- dependency-name: "@mswjs/interceptors"
  dependency-version: 0.45.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: msw
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Rumble now answers a video page request without cookies with a 307 to
the same URL that sets `RNSC` and `__cf_bm`. The route asked for the
page to collect those cookies, but fetch followed the redirect without
sending them, looped until "redirect count exceeded", and every channel
feed timed out.

Stop following redirects on that first request, so the cookies come
from the 307 itself; the second request already sends them and gets
the full page. The MikhailaPeterson channel lists 25 videos again, all
dated and with descriptions.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

⤵️ pull merge-conflict Resolve conflicts manually

Projects

None yet

Development

Successfully merging this pull request may close these issues.