From 85cdc9ff30d2823fbab14d1c0a85695fb9912d23 Mon Sep 17 00:00:00 2001 From: syui Date: Thu, 8 Jan 2026 08:32:20 +0900 Subject: [PATCH] fix patch test --- install.zsh | 52 ++++++++++++++- ios/patching/005-social-app-ios-screens.patch | 2 +- .../200-feed-generator-custom-existing.patch | 64 +++++++++++++++++++ 3 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 patching/200-feed-generator-custom-existing.patch diff --git a/install.zsh b/install.zsh index a4c331b..07a2275 100755 --- a/install.zsh +++ b/install.zsh @@ -77,7 +77,7 @@ PATCH_FILES=( "130-atproto-ozone-enable-daemon-v2.patch" "152-indigo-newpds-dayper-limit-pr707.diff" "190-bgs-disable-ratelimit.patch" - "200-feed-generator-custom.patch" + "200-feed-generator-custom-existing.patch" ) function at-repos-clone() { @@ -331,6 +331,54 @@ export const SOCIAL_APP_DOMAIN =\ popd > /dev/null } +function at-repos-feed-generator-newfiles() { + echo "" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo "📝 Creating feed-generator new files..." + + # Create app.ts + cat > $d/repos/feed-generator/src/algos/app.ts <<'EOF' +import { QueryParams } from '../lexicon/types/app/bsky/feed/getFeedSkeleton' +import { AppContext } from '../config' + +// max 15 chars +export const shortname = 'app' + +export const handler = async (ctx: AppContext, params: QueryParams) => { + let builder = ctx.db + .selectFrom('post') + .selectAll() + .orderBy('indexedAt', 'desc') + .orderBy('cid', 'desc') + .limit(params.limit) + + if (params.cursor) { + const timeStr = new Date(parseInt(params.cursor, 10)).toISOString() + builder = builder.where('post.indexedAt', '<', timeStr) + } + const res = await builder.execute() + + const feed = res.map((row) => ({ + post: row.uri, + })) + + let cursor: string | undefined + const last = res.at(-1) + if (last) { + cursor = new Date(last.indexedAt).getTime().toString(10) + } + + return { + cursor, + feed, + } +} +EOF + + echo "✅ Created src/algos/app.ts" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +} + function at-repos-build-docker-atproto() { cd $d docker image prune -a @@ -533,6 +581,7 @@ case "$1" in at-repos-social-app-ios-patch at-repos-patch-apply-all at-repos-ozone-patch + at-repos-feed-generator-newfiles show-failed-patches exit ;; @@ -574,6 +623,7 @@ case "`cat /etc/hostname`" in at-repos-social-app-ios-patch at-repos-patch-apply-all at-repos-ozone-patch + at-repos-feed-generator-newfiles show-failed-patches at-repos-build-docker-atproto at-repos-push-docker diff --git a/ios/patching/005-social-app-ios-screens.patch b/ios/patching/005-social-app-ios-screens.patch index 492e263..f54c8b0 100644 --- a/ios/patching/005-social-app-ios-screens.patch +++ b/ios/patching/005-social-app-ios-screens.patch @@ -32,7 +32,7 @@ index 77f219e55..53f5e0cc0 100644 - to="https://bsky.social/about/support/tos" + label={_(msg`syu.is Terms of Service`)} + to="https://syu.is/about/support/tos" - style={[a.text_md, a.leading_normal]}> + style={[a.text_md, a.leading_snug]}> - Bluesky Social Terms of Service + syu.is Terms of Service diff --git a/patching/200-feed-generator-custom-existing.patch b/patching/200-feed-generator-custom-existing.patch new file mode 100644 index 0000000..0925d08 --- /dev/null +++ b/patching/200-feed-generator-custom-existing.patch @@ -0,0 +1,64 @@ +diff --git a/src/algos/index.ts b/src/algos/index.ts +index b7ee48a..102cb93 100644 +--- a/src/algos/index.ts ++++ b/src/algos/index.ts +@@ -4,11 +4,13 @@ import { + OutputSchema as AlgoOutput, + } from '../lexicon/types/app/bsky/feed/getFeedSkeleton' + import * as whatsAlf from './whats-alf' ++import * as app from './app' + + type AlgoHandler = (ctx: AppContext, params: QueryParams) => Promise + + const algos: Record = { + [whatsAlf.shortname]: whatsAlf.handler, ++ [app.shortname]: app.handler, + } + + export default algos +diff --git a/src/index.ts b/src/index.ts +index 7128525..40d985c 100644 +--- a/src/index.ts ++++ b/src/index.ts +@@ -22,8 +22,10 @@ const run = async () => { + }) + await server.start() + console.log( +- `🤖 running feed generator at http://${server.cfg.listenhost}:${server.cfg.port}`, ++ `running feed generator at http://${server.cfg.listenhost}:${server.cfg.port}`, + ) ++ console.log('Supported algos:', Object.keys(require('./algos').default)) ++ console.log('Publisher DID:', server.cfg.publisherDid) + } + + const maybeStr = (val?: string) => { +diff --git a/src/methods/feed-generation.ts b/src/methods/feed-generation.ts +index 0f4989e..17be062 100644 +--- a/src/methods/feed-generation.ts ++++ b/src/methods/feed-generation.ts +@@ -10,7 +10,7 @@ export default function (server: Server, ctx: AppContext) { + const feedUri = new AtUri(params.feed) + const algo = algos[feedUri.rkey] + if ( +- feedUri.hostname !== ctx.cfg.publisherDid || ++ //feedUri.hostname !== ctx.cfg.publisherDid || + feedUri.collection !== 'app.bsky.feed.generator' || + !algo + ) { +diff --git a/package.json b/package.json +index 1431a9e..6a7c33c 100644 +--- a/package.json ++++ b/package.json +@@ -23,9 +23,11 @@ + "dotenv": "^16.0.3", + "express": "^4.18.2", + "kysely": "^0.27.4", +- "multiformats": "^9.9.0" ++ "multiformats": "^9.9.0", ++ "ws": "^8.14.2" + }, + "devDependencies": { ++ "@types/ws": "^8.5.10", + "@types/better-sqlite3": "^7.6.11", + "@types/express": "^4.17.17", + "@types/node": "^20.1.2",