Mentions

Conversations linking to GitHub, newest first. Times are UTC.

Mentions by source

X

6,321
Nov 11, 20:00Nov 12, 20:00

Bluesky

2,093
Nov 11, 23:00Nov 12, 23:00
Nov 11, 22:00Nov 12, 22:00
Nov 11, 22:00Nov 12, 22:00
Nov 11, 23:00Nov 12, 23:00
Nov 11, 22:00Nov 12, 22:00
Nov 11, 22:00Nov 12, 22:00
Nov 11, 22:00Nov 12, 22:00
Oct 14, 21:00Oct 15, 21:00

Delayed · data through Oct 15, 21:00 UTC

DEV

712
Nov 11, 23:00Nov 12, 23:00
Nov 11, 23:00Nov 12, 23:00
Nov 11, 11:00Nov 12, 11:00

Delayed · data through Nov 12, 11:00 UTC

Nov 11, 23:00Nov 12, 23:00
Oct 28, 01:00Oct 29, 01:00

Delayed · data through Oct 29, 01:00 UTC

Nov 8, 11:00Nov 9, 11:00

Delayed · data through Nov 9, 11:00 UTC

Nov 11, 23:00Nov 12, 23:00

Latest posts

  1. X@novelezra · 21 views

    So the guy who created the PS3 recomp tool has released his first port using the tool. Tools of Destruction. This game is super super special to me so I'll try it tomorrow and see how it is, but considering who did it, I'm sure it's wonderful. Bedtime. Re-TeRo17/ratchet-tod-recomp

  2. X@HiTw93 · 16 views

    @x1tx1t 有的 使用 mo slim tw93/Mole

  3. X@CCNADailyTIPS · 24 views

    @UK_Daniel_Card Nice! I want to run the same. Which artex repo did you use?? This one BaaRai/ARTEX

  4. YouTubeRepoBytes | Find It. Understand It. Build With It. · YouTube description · 11 likes · 475 views

    Feynman - The Open Source AI Research Agent Feynman is an open-source AI research agent with over ten thousand GitHub stars and one thousand one hundred forks. It helps researchers with literature reviews, deep research, and more. Visit feynman.is for more info. #AI #OpenSource #Feynman 🔗 Companion-Inc/feynman

  5. Bluesky@josephhall.org · 3 likes · 2 reposts

    macOS + GitHub Actions: eMudhra fixes require ongoing curation. Runner images can retain vulnerable CA bundles; updating Homebrew doesn't fix Apple's curl/Python. Apple Python can also ignore CA env overrides. Test each client--and recheck after OS updates. runner-images#15228

  6. X@laogeai · 5 views

    两台机器共用两块屏,每次切换要伸手按显示器按钮。买 KVM 好几百还多一堆线。 display-switch 监听 USB 插拔:键鼠插哪台,显示器切哪台的输入口,配置两行。 haimgel/display-switch

  7. Redditu/Vildiil · r/visualnovels · 6 points · 11 comments

    Kira Kira Improvement Patch I know AI isn't the most popular thing around here, but I figured I'd share this Kira Kira Improvement Patch I made using GPT-6 Astra. This isn't a full retranslation of the game. I went into the project with two clear goals: - Translation corrections: Fix mistranslations, misinterpreted meanings, confused subjects, and details lost in the original English release. - Clearer English: Improve awkward or broken sentences while preserving the lively dialogue and distinct character voices. If you've ever read, or attempted to read, Kira Kira, you'll probably understand where I'm coming from. It's a product of the 2009-era MangaGamer localization scene, when translation quality could be pretty hit-or-miss. Unfortunately, Kira Kira often falls into the latter category. I'm a big fan of Setoguchi's visual novels, so I've always been a little disappointed by the state of Kira Kira's English translation, especially since MangaGamer never went back to give it another editing pass. I also included a bolder font to improve readability, as the original game's font was particularly difficult to read. You can find the patch here: Dern00/Kira-Kira-Improvement-Patch The patch was made for the 18+ edition sold through MangaGamer's store. It will not work with the All Ages edition.

  8. X@imhog456 · 7 likes · 1 repost · 315 views

    github.com/FunkinCrew/funkin.assets/tree/458b9319… Pra dizer que essa droga não é mod

  9. Upgrade a Major Dependency With a Coding Agent: Changelog First, Then the Failing Tests - Book: AI That Acts - The series: AI in TypeScript — 5 books, from your first LLM call to agents in production — all five here - My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools - Me: xgabriel.com | GitHub --- openai-node 7.0.0 came out on July 27, 2026, with one item under breaking changes: the SDK now requires Node.js 22. Three months later, 7.44.0, a minor release, carries the line "Breaking change in a minor release." It says callers that directly access item.content or item.role on Live Decision items "may no longer compile." 7.43.0, a few days earlier, has the same label for a change to DecisionInputMessage. Type "upgrade openai to v7" into a coding agent. It bumps the version and starts reading type errors. It has never seen those release notes. Every fix it makes is a guess about what changed, and in a diff a guess that compiles looks just like a fix that follows the release note. The order I'd use: find out what the new version demands, read what changed in every release you are skipping, record what actually broke in your code. Then the agent gets all three as its brief. Steps 1 to 3 are plain gh, npm, git and tsc in a terminal. From step 4 on I use Hermes IDE, which I build, so weigh that part accordingly. The running example is a TypeScript app in ~/code/app on openai@6.49.0, the release that the 7.0.0 notes compare against, going to 7.47.0, the latest release as of October 31. Swap in your own package and versions. Step 1: Ask npm what the new version demands Four read-only commands in your main checkout. Nothing changes on disk. cd ~/code/app npm outdated openai npm view openai@7.47.0 engines peerDependencies node --version npm explain zod npm outdated shows Current, Wanted and Latest. Wanted is the highest version your package.json range allows, so with ^6.49.0 it stays on 6.x while Latest shows 7.x. npm prints that row in yellow, its colour for a newer version outside your range. npm view reads the target's manifest from the registry before you install anything. The 7.47.0 package.json sets "node": ">=22.0.0" and lists optional peers, among them zod at ^3.25 || ^4.0 and ws at ^8.21.0. Both fields bite later than you'd think. npm's package.json docs say that unless you set engine-strict, the engines field "will only produce warnings." On Node 20 the install goes through and you find out in CI or at runtime. Peers bite only if you already have them. openai marks zod and ws optional, and the same docs say "Npm will not automatically install optional peer dependencies." But if your tree already holds a zod or ws outside those ranges, a conflicting requirement "may cause an error if the tree cannot be resolved correctly." npm explain zod prints the chain of dependencies behind each copy of zod you have, so you know whether your code or some other package owns it. If node --version prints anything below 22, that is its own change. Make it before the SDK bump, or at least name it in the brief. Step 2: Pull every release note in the range First, keep all the working files out of git. Every file in this tutorial starts with .upgrade-: echo '.upgrade-*' >> .gitignore The major release's own notes are one call to gh release view: gh release view v7.0.0 -R openai/openai-node \ --json body -q .body Those are the notes most people read, and for this upgrade they say the least. To get every release between your version and the target, list them all with gh api and filter them with jq. Save this filter as .upgrade-between.jq: .[][] | select(.draft | not) | select(.tag_name | test("^v[0-9]+\\.[0-9]+\\.[0-9]+$")) | (.tag_name | ltrimstr("v") | split(".") | map(tonumber)) as $v | select($v > $from and $v <= $to) | "## \(.tag_name) (\(.published_at[0:10]))\n\n\(.body // "")\n" Then fetch, filter and search: gh api --paginate --slurp \ 'repos/openai/openai-node/releases?per_page=100' \ > .upgrade-releases.json jq -r --argjson from '[6,49,0]' --argjson to '[7,47,0]' \ -f .upgrade-between.jq .upgrade-releases.json \ > .upgrade-changelog.md grep -n -i 'breaking' .upgrade-changelog.md --paginate --slurp returns one array of pages, which is why the filter starts with .[][]. The test line skips prerelease tags such as -beta.1, whose parts aren't plain numbers. Each tag becomes an array like [7,44,0], and jq orders arrays lexically, element by element, so 7.10.0 lands above 7.9.0 where a string comparison would put it below. The output is newest first. That grep is your short list. For this range it catches at least the three entries from the top of this post: the Node 22 requirement and the two minor releases labelled breaking. The rest of .upgrade-changelog.md is what the agent reads when an error doesn't match any of them. !A long unrolled scroll of release notes under a magnifying glass, with one line glowing burnt orange among dozens of grey ones The breaking change you need is rarely in the major release's notes alone. Step 3: Bump in a throwaway worktree and save what broke You want the real failure list before the agent starts, and you don't want your main checkout sitting on a half-upgraded lockfile meanwhile. A detached git worktree is a second folder on the same commit, with no branch to clean up afterwards. git worktree add --detach ../app-probe cd ../app-probe npm ci npm install openai@7.47.0 npx tsc --noEmit --pretty false \ > ../app/.upgrade-tsc.txt 2>&1 npm test > ../app/.upgrade-tests.txt 2>&1 cd ../app git worktree remove --force ../app-probe npm ci comes first because a new worktree holds tracked files only, so there is no node_modules yet. --noEmit type-checks without writing any output. --pretty false matters when output goes to a file: pretty is on by default and adds colour and context, and the plain form is easier for you and the agent to read line by line. Both outputs are written back into the main folder, so they outlive the probe. --force is there only because the probe holds an uncommitted bump on purpose. Git's docs say remove refuses an unclean worktree without it. Keep that refusal on any worktree that holds work you care about. grep -c 'error TS' .upgrade-tsc.txt counts the type errors. If both files come back clean, the upgrade may be one line plus the Node change. Step 4: Write the brief and start the task Save this as .upgrade-brief.md, edited for your versions: Upgrade openai from 6.49.0 to 7.47.0. Read before editing: - .upgrade-changelog.md: every release note in range - .upgrade-tsc.txt, .upgrade-tests.txt: what broke 1. Run `npm install openai@7.47.0`, then `npx tsc --noEmit` and `npm test`. If the failures differ from the files, stop and say so. 2. Fix one failure per turn. Start each reply with the error line you fixed. 3. Name the release note each fix follows. If no note explains a failure, stop and ask. 4. Don't edit or delete tests. Don't add @ts-ignore, @ts-expect-error or `as any`. 5. 7.x needs Node.js 22. Update "engines" and the Node version in CI to match, in its own turn. 6. Done when tsc and npm test both pass. Rules 1 and 2 keep you and the agent on the same failure list, one entry per reply, which is what the review in step 5 needs. Rule 3 forces every change to point at a note, and rule 4 shuts the cheapest way to turn a suite green. Next, the recipe Hermes runs for every new task's worktree, from the recipe docs: # .hermes/worktree.toml copy = [".upgrade-*"] done_when = ["npx tsc --noEmit", "npm test"] copy brings files from your project folder into the same path in the worktree, but only files git ignores. If a pattern matches a tracked file, Hermes refuses the whole recipe and setup doesn't run. That is why the .gitignore line came first in step 2. done_when holds the default checks for the task's Done-When, here the same two commands as rule 6. The first time Hermes sees the recipe, and whenever it changes, it asks you to choose Run setup or Skip. Choose Run setup: per the docs, Skip "starts the session without setup." Commit the recipe and the .gitignore line together. Then press ⌘N (Ctrl+Shift+N on Windows and Linux), pick Claude Code or Codex, and type Read .upgrade-brief.md and follow it. The agent starts in a real terminal on a new hermes/ branch, in its own worktree, with that line as its first prompt. Your main checkout stays on 6.49.0 and keeps working while it runs. Hermes never answers a permission prompt for you, so when the agent asks to run npm install, you answer in its terminal. !The Hermes New task sheet with a task typed in and chips for Claude Code, the project, a new hermes/ worktree, Accept edits, model and effort, above a preview of the claude command The ⌘N New task sheet in Hermes 2.3.4: chips for Claude Code, the project, a new hermes/ worktree, Accept edits, model and effort, and the "Hermes will run" preview of the claude command. Step 5: Review one failure per turn, then land Because of rule 2, every agent reply should map to one line in .upgrade-tsc.txt or .upgrade-tests.txt. The "Agent replies" strip under the session shows one chip per reply with the lines it changed. Click a chip to see that reply's changes, or to restore your files to that point. ⌘G (Ctrl+Shift+G on Windows and Linux) opens the Review Desk, which shows changes by turn or by file, with risk flags. Read it by turn with the failure list open beside it. For each turn, check three things: the diff touches the code the error line points at, it follows the release note the agent named, and it leaves the tests alone. Switch to the by-file view for that last one. A line comment goes back to the agent that wrote the line. Say a turn silences the 7.44.0 error with a cast: comment on it and ask for the narrowing the release notes suggest, checking 'content' in event.item before reading message fields. !The Hermes Review Desk in By turn view, listing two turns with file and line counts, the first turn's diff of a TypeScript file, the changed-files list and a drafted commit message The Review Desk (⌘G) in By turn view in Hermes 2.3.4: two turns listed with their file and line counts, turn 1's diff, the changed-files list, and a commit message drafted from the turns. Without Hermes, the same review from inside the task's worktree is two commands. The agent's edits usually sit uncommitted until you land, so compare the working tree, not commits: git status --short git diff main -- '*.test.ts' The first lists every file the agent touched. The second should print nothing; any output there means a test was edited. When the checks pass, Land commits, opens a pull request or merges locally, into the branch the task started from. For a dependency upgrade, take the pull request: CI runs the Node versions and environments your laptop doesn't. Watch it with gh pr checks --watch. If CI disagrees, don't merge. Paste the failing job's output into a new .upgrade-ci.txt and tell the agent to read it. If you landed locally instead and main goes red, Land can be undone. What this doesn't replace Bots already open the bump PR, and both of the common ones put release notes in it. A Dependabot PR carries Release notes, Changelog and Commits sections. Renovate's docs say it filters the releases to the versions the PR updates and embeds them in the PR body. If you already use one, that is step 2 done for you. What they don't give the agent is your failure list and the rules. You don't need Hermes for the brief. Claude Code's overview lists updating dependencies among the jobs it handles, and the Codex CLI runs commands in your terminal too. Hand either one .upgrade-brief.md in a plain worktree and the method holds. Hermes adds the task's own branch and worktree, the per-turn review and Land with undo, all on your machine. It isn't affiliated with OpenAI, Anthropic or any agent vendor. I haven't run this upgrade on a real app myself. How many errors you get, and which notes they trace to, depends on which parts of the SDK your code touches. That is why you capture them before the agent starts. --- If this was useful I build Hermes IDE, free and source-available (BSL 1.1) on macOS, Windows and Linux: download it or star it on GitHub if the task-per-worktree flow saves you a broken main. If the app you're upgrading calls tools through an LLM SDK, AI That Acts is the book about that layer: tool calling, functions and a first working agent, in TypeScript. That is the code a release like 7.44.0 reaches into. ![AI That Acts — AI in TypeScript](amazon.com) The whole AI in TypeScript series, from your first LLM call to agents in production, is here.

  10. X@JoeBeOne · 1 like · 102 views

    macOS + GitHub Actions: eMudhra fixes require ongoing curation. Runner images can retain vulnerable CA bundles; updating Homebrew doesn't fix Apple's curl/Python. Apple Python can also ignore CA env overrides. Test each client--and recheck after OS updates.runner-images#15228

  11. Redditu/SkyHighGam3r · r/recomps · 15 points · 2 comments · RetroPulse03/WinBackRecomp

    WinBack: Covert Operations (N64) With recomps exploding I kind of expected this one by now, but I forget that it’s kind of a hidden gem. It’s one of my all time favorites though, so I figured I’d give it a go. It’s super early, and yes it’s heavily Claude code assisted. The game is booting though and I will fix issues as I play test. Plan is to put some QoL options in the recomp menu, and make some mods for fun. Once I’m done and I have a decent grasp of the workflow I plan to tackle the PS2 version with a closer eye on detail. I fully expect at some point someone will make a better recomp of the N64 version, and I encourage it. This is for learning and fun for me. (Also finally an excuse to learn GitHub)

  12. You have a name but no username: find public profiles on 3000+ sites with one API call Most profile lookups start from a handle. In practice you often start from a name: a lead list, a candidate, a counterparty in a due diligence file. Nobody gives you the username. I built an Apify Actor around the open-source Maigret engine (MIT) that closes that gap. You send a name, it builds the usernames a real person would plausibly have picked, ranks them, and checks each one against the full Maigret site catalogue. What happens to a name Give it "John Smith" and it tries candidates such as johnsmith, john.smith, john_smith and smithjohn, best guess first. Each candidate is checked against 3000+ sites. You get one row per confirmed public profile. Input - names: up to 10 names per run - maxPermutations: how many username candidates to build per name (default 6) - siteScope: top300, top500 or all3000 - minConfidence: drop weak matches, useful for common names - monitorMode: on a schedule, return only what changed since the last run { "names": ["John Smith"], "maxPermutations": 6, "siteScope": "top500", "minConfidence": 0.5 } Output Every row carries a rowType, so filtering is one expression. A profile-found row looks like this: { "rowType": "profile-found", "name": "John Smith", "username": "john.smith", "site": "GitHub", "url": "https://github.com/john.smith", "category": "Developer", "confidence": 1.0 } Confidence is about the person, not the account A match only tells you that a username exists on a site. The confidence score tries to answer a different question: how likely is it that this handle belongs to the person you named. A username that contains every part of the name scores high. A bare first name scores low, because thousands of unrelated people use it. Treat the result as a lead to verify, not as proof of identity. Where it fits - sales and recruiting: find the public GitHub, X or Medium presence of a name on a list - due diligence: a first pass before manual review - monitoring: a weekly schedule that reports only new or changed profiles By default the rows hold account-existence evidence only. Profile fields such as bio or location are opt-in. The Actor only reads publicly reachable pages and never logs in. Use it where you have a lawful basis, and follow the laws that apply to you, including GDPR and similar rules. The Actor: Social Media Finder by Name on Apify I build these Actors at Ntriq (Korea). If you want another output field, tell me in the comments.

  13. X@JakeKing · 1 like · 179 views

    We’re living this theory at minimal. gominimal/minimal Know what you’re running, lean towards latest and have strong prerequisites for a high trust supply chain for your dependencies and software.

  14. X@AI_DVD6 · 65 views

    Dossier 免费开源求职助手,入口在这里👇 GitHub: AienTech/dossier 官网: dossier.aien.me 怎么用? 01|先通过 Docker 部署 Dossier。 02|导入自己已有的 PDF / Word 简历,建立个人经历档案。 03|连接 AI 模型,支持 Ollama、LM Studio 本地模型,也可以使用云端 API。 04|粘贴一个真实的英文招聘 JD,生成岗位匹配分析、定制简历和求职信。 05|人工检查后导出 PDF,把投递进度记录在看板里。 几个注意事项: 软件免费,但云端模型和部分招聘搜索 API 可能收费。 目前界面主要是英文,适合海外求职;部分岗位数据源需要额外配置。 它不会默认替你批量海投。连接 Gmail 后,可以在本人确认下发送申请材料。 还有一点,AI 写出来的简历一定要自己核对,尤其是项目经历、技能和工作年限。 建议先找 3 个不同岗位,看看它生成的简历到底能不能拉开区别。

  15. V2EX@0x0x · 分享创造

    跟风 Karpathy 的 HackerTube,做了个 V2EX 版 用 muse 跟风做了一个类似的,把本站历史帖子里推荐过的博主提取了一遍 网站: hackertube-cn.pages.dev 仓库地址: caikaidev/hackertube-cn

  16. X@gitrepos · 4 views

    wppconnect ⭐ 3.5k An unofficial WhatsApp API that lets developers build bots, automation, and integrations. 🔗 wppconnect-team/wppconnect #opensource t.co

  17. Study case: foody-monk, Parcel to Vite. The only one of six that got smaller, 139 to 127 KB gzip, because the app used React.lazy and Vite honored the code splitting Parcel had flattened. Every rule in bundleferry came from a real migration like this. ryanda9910/bundleferry

  18. Redditu/asifverse4 · r/Chempros · 2 comments

    Tired of OriginLab crashing or juggling messy scripts to process spectra? We built LabScribber: a free, open-source workstation for Spectroscopy, Deconvolution & Chemometrics (backed by 177 tests) — would love your feedback! Body: Hey ! 👋 Like many of you working at the interface of computation and experiments, our group was constantly frustrated by the existing spectroscopy toolkit. We were either: 1. Fighting with expensive, proprietary licenses (OriginLab, CasaXPS, TopSpin) that crash on large datasets, or 2. Writing repetitive, fragmented Python/MATLAB scripts just to do standard baseline corrections, Voigt peak deconvolution, and Tauc plot bandgap extractions. To solve this, we developed LabScribber — a completely free, open-source (MIT licensed) academic spectroscopy workstation available as a desktop app (Windows, macOS, Linux) or directly in your browser. 🔗 GitHub Repo & Installers: asifverse4/LabScribber 🌐 DOI / Zenodo Citation: doi.org --- ### 🔬 What LabScribber Does Out of the Box - Multi-Technique Support: Native workflows for FTIR, Raman, UV-Vis, NMR (¹H, ¹³C, 2D COSY), XPS, Photoluminescence, XRD (Scherrer & Williamson–Hall), Cyclic Voltammetry (CV) , and EIS . - Signal Processing & Deconvolution: Robust baseline subtraction, smoothing, and multi-peak fitting (Gaussian/Lorentzian/Voigt) complete with covariance-based parameter uncertainties . - Solid-State & Bandgap Tools: Direct & indirect Tauc bandgap extraction from UV-Vis/diffuse reflectance. - Chemometrics Engine: Built-in PCA, MCR-ALS, PLS, and Hierarchical Clustering for batch spectral analysis. - Reproducibility First: Save entire sessions into structured .lsb files, and auto-generate publication-ready text for your paper's "Methods" section . - Rock-Solid Quality: Backed by 177 automated tests running in CI across both the numerical core and UI. --- ### 💬 We’d Love Your Input (Interactive Questions) We are actively refining the roadmap and would love to hear from this community: 1. Overlaying DFT vs. Experiment: What is your biggest headache when comparing computed spectra (e.g. ORCA/Gaussian TD-DFT UV-Vis or harmonic IR/Raman frequencies) against raw experimental data? Would a direct .out / .log parser be helpful to you? 2. File Formats: Which raw instrument formats (e.g., JCAMP-DX .jdx, .spc, Bruker/Agilent proprietary exports) cause you the most grief that you'd like LabScribber to parse natively? 3. Deconvolution: What baseline correction algorithms (AsLS, Polynomial, Rolling-ball, Shirley for XPS) do you trust most for your specific data? --- ### 💻 Try It Out You can grab the standalone desktop installer or portable build directly from GitHub: 👉 [Download Latest Release]( github.com/asifverse4/LabScribber/releases/latest ) (Windows .exe, macOS .dmg, Linux .AppImage) Or run it locally with Node: ```bash git clone asifverse4/LabScribber cd LabScribber && npm install && npm run dev

  19. YouTubeReadme 1st · YouTube description · 48 views

    244 free pixel art effects, and Claude can draw more 🔥 | Free AI EP.1 pixelfx: 244 ready-made pixel art effects (fire, explosions, water, magic and more), free and open source. What it does: 1. 244 effects you can drop into a game 2. Export them as sprite sheets for any game engine 3. Comes with a Claude Code skill that drafts, renders, looks at and refines new effects 🔗 Link pixelfx (free, MIT) patch-gg/pixelfx Facts from the project's own README and repo page (checked 2026-11-03). Repos change; check the page before you install. ⚠️ This channel is not affiliated with or endorsed by Anthropic or the project's authors. Readme 1st: we read the README first, so you don't have to. One free AI tool a day. #pixelart #gamedev #opensource #ClaudeCode #shorts

  20. X@_alphashark_ · 8 views

    6/ The facts I replied with. No analytics, no tracking, no host permissions. It only asks for storage, tabs, context menus and alarms. The only server call is the Pro key check. Building in public is humbling some days. More of my work github.com/theluckystrike

  21. YouTubeShiftHands · YouTube description · 96 views

    DeepSeek's Free AI Super-Agent Has a Catch DeepSeek open-sourced a free AI super-agent, but it is a research prototype and running it still costs model usage. Start building and deploying your own AI agents: shifthands.com Full video: youtu.be What DeepSeek released (Oct 31, 2026): dsh-superagent-prototype on GitHub, MIT license. Per the README it is a coding agent for one GitHub repository: when someone allowed asks for work, it opens a work item, does it in its own session and answers, for example with a pull request. It is a research prototype, not an official DeepSeek product, and running it uses whatever model you configure, so it still costs model usage. In DeepSeek's own simulation (reported by MarkTechPost), tasks finished at p50 12.4 min and p95 15.7 min, vs 29.5 min p95 for a single agent session. These are DeepSeek's numbers, not independent tests. In ShiftHands I created a new agent, Issue Triage, on DeepSeek V4.1 Flash via OpenRouter, and gave it six made-up GitHub issues. It put the leaking login token (#104) first, marked #106 as a duplicate of #101, and wrote draft replies, with nothing posted. Sources: README: deepseek-ai/dsh-superagent-prototype Deployment doc: github.com/deepseek-ai/dsh-superagent-prototype/b… MarkTechPost: marktechpost.com Leandro von Werra on X: x.com #Shorts #DeepSeek #AIagents #OpenSource #ShiftHands

  22. Redditu/jdxyw · r/generative · 25 points

    Escher droste gallery Could find more from my site jdxyw.github.io. You can also generate it with different parameters using my code jdxyw/generativeart . Hope you guys like it, and star the repo if you like it.

  23. X@aoteman1can · 50 views

    小火箭别只停留在导入订阅,这个 GitHub 仓库把进阶玩法也整理好了。 Shadowrocket 中文指南,从基础配置、代理规则,到分流、DNS、模块等都有涉及。 新手可以用来入门,老玩家也能当配置手册收藏。 🔗 LOWERTOP/Shadowrocket

  24. X@FalduNishil · 6 likes · 318 views

    i made 3 open source contributions to libraries in a few days. 1. i was looking into some very performant markdown rendering libraries for streaming content and came across streamdown. made 2 contributions - a bug fix and perf improvement. streamdown#685 streamdown#689 2. i was using workflow library for a project when claude discovered a bug. workflow#4932 a few notes: - i enjoyed learning the internals so much, especially now that ai makes it so easy and i can ask unlimited questions - after knowing a bit more about the internals, it was so easy to have claude run my perf improvement idea quickly and check if it was any good - yes it's relatively easy to make oss contributions now but that doesn't mean one should make the job difficult of maintainers by putting up PRs without understanding and with descriptions that even they don't understand - i actually had claude generate specific figures that i could use in my PRs - it is your duty to make it easier for maintainers to review it - @vercel is doing so good when it comes to oss - they are shipping all the time

  25. X@xqliu · 87 views

    worktrunk 仓库,文档站入口在 README 顶部 max-sixty/worktrunk

  26. Redditu/AdonaiClassic · r/GalaxyA56 · 3 points · 3 comments

    Is the OneUiX module compatible? I can't see a compatibility list SoClear/OneUIX

  27. Redditu/Bi-Rabittoh · r/castlevania · 12 points · 1 comment · birabittoh/NocturneRecomp

    NocturneRecomp is now fully native, works on Android with randomizer support NocturneRecomp v1.5.1 comes with: * a fully native renderer (no Xenia involved) * Mac OS and Android builds * a built-in randomizer * a plethora of quality of life enhancements * support for JP voices and assets * restored FMVs * built-in screen filters * Xbox Live leaderboards * mod support

  28. Redditu/AMINOPlaysGames · r/decomps · 39 points · 8 comments

    007: Agent Under Fire PC PORT [4K60] 2026 You can get it here: hk21x/007-agentunderfire-recomp

  29. X@githubaitrend · 19 views

    🔥 GitHub急上昇 #3/3 paperclipai/paperclip ⭐ 今日 +412 / 累計 110,387 TypeScript 複数のAIエージェントを組織として運用するオープンソース基盤。目標やタスクの割り当て、承認、権限・予算、進捗・コストを一元管理できる。 paperclipai/paperclip #MCP #AIエージェント #LLM #AI

  30. X@TM_Kein · 52 views

    egoist/mygo 마이고? 이름 특히하네 하고 보다가 머릿속이 ?로가득참

  31. DEV@farshad_khazaee_8871e424d · 4 reactions · 6 comments

    # 230,756 Requests/Second. And Breeze Is Much More Than a Fast Go Framework. 🚀 What if your Go web framework could deliver exceptional performance while providing an entire ecosystem for building, operating, and scaling modern applications? Meet Breeze v2.2. Built on gnet. Engineered for throughput. Designed for production. ⚡ Let's talk numbers. Breeze v2.2 (Go 1.27) has achieved: | Concurrent Connections | Requests / Second | |---:|---:| | 64 | 230,756 | | 256 | 207,333 | | 512 | 198,196 | Nearly 200K requests per second, even at 512 concurrent connections. And how does it compare with other Go frameworks on The Benchmarker? Go performance comparison | Framework | 64 | 256 | 512 | |---|---:|---:|---:| | Breeze v2.2 | 230,756 | 207,333 | 198,196 | | web | 205,272 | 187,397 | 178,910 | | fasthttp | 182,167 | 166,243 | 158,145 | | Fiber | 178,319 | 162,992 | 155,733 | | Hertz | 173,885 | 154,279 | 143,920 | At 64 connections, Breeze delivers: - 12.4% more throughput than the next-highest Go entry. - 26.7% more than fasthttp. - 29.4% more than Fiber. - 32.7% more than Hertz. And the advantage remains across all three concurrency levels. 🧠 Performance is in the architecture. Breeze is built around an event-driven gnet engine, with: - Inline execution for non-blocking handlers. - O(1) exact-path routing, dynamic parameters and wildcards. - Opt-in zero-copy request-header handling. - Pooled contexts, requests, responses and buffers. - Configurable worker pools with backpressure policies for blocking operations. But here's where Breeze becomes more interesting. 🏗️ More than an HTTP framework. Breeze brings an extensive set of production-ready capabilities into one ecosystem: HTTP & Security - High-performance HTTP server, routing, request binding and validation. - 12 built-in middlewares: CORS, rate limiting, compression, ETag, logging, recovery, security headers, JWT and more. - OAuth2 / social login with Google, GitHub, Microsoft and Discord, including PKCE. - Graceful shutdown and static file serving. Real-time & Application Development - Native WebSocket server and client, with connection lifecycle management and broadcasting. - Server-side templates, layouts, reusable components, SPA navigation, partial rendering and i18n — without a frontend framework. - Built-in byte-range video streaming, seeking, caching and signed URLs. Backend Infrastructure - Typed, reflection-free event bus with priorities, filters, asynchronous dispatch and metrics. - Durable workflows with retries, timeouts, parallel DAG execution, Saga compensation and crash recovery. - SQL migrations and a gnet-based outbound HTTP client. - JSON-RPC 2.0 server, including batches and notifications. - gRPC server/client code generation. Developer Experience - Rails-style CLI for project scaffolding and feature integration. - 23 modular breeze add features. - Code generators for resources, handlers, models, events, listeners, workflows, middleware, WebSockets, views, jobs and gRPC. - OpenAPI generation, interactive Scalar documentation and LLM-readable documentation. - Docker support and runnable examples. Observability & Production Operations - Integrated live dashboard with request monitoring, RPS, latency, memory and goroutine metrics. - Per-request profiling, route explorer and API explorer. - Database browser, ORM query monitoring, cache, queue and scheduler monitoring. - Logs, health checks, video monitoring and Fleet views. - Built-in observability, diagnostics and distributed tracing across services, with W3C trace propagation, topology visualization and root-cause analysis. AI-Native Development - Native MCP integration in three forms: standalone generator, read-only application runtime and in-process server. - Approximately 40 MCP tools for project scaffolding, code generation, feature integration, Go toolchain execution and live service inspection. - Auto-MCP: expose explicitly tagged, authenticated application routes as AI-callable tools. All of this in one MIT-licensed Go ecosystem. 🚀 But performance isn't the only reason to choose Breeze. A fast server is valuable. But a framework that also helps you build APIs, manage workflows, handle real-time communication, monitor production, trace distributed services, generate code, document APIs and integrate AI agents is a much bigger proposition. Less infrastructure to assemble. Fewer disconnected tools. More capabilities in one cohesive ecosystem. That's the vision behind Breeze. And we're still improving it. The goal isn't just to build another fast Go framework. It's to build a better foundation for modern Go applications. Explore Breeze 🏆 Benchmark results: web-frameworks-benchmark.vercel.app 📊 Go framework comparison: web-frameworks-benchmark.vercel.app 💻 Source code: nelthaarion/breeze 📚 Documentation: nelthaarion.github.io Breeze v2.2 — Performance is the beginning, not the whole story. #Go #Golang #Breeze #GoFramework #PerformanceEngineering #OpenSource #SoftwareArchitecture #DeveloperTools #AIEngineering #MCP

  32. X@wangchuan0056 · 10 views

    来源:官方 README yetone/magpie 和文档 usemagpie.ai 补几个细节: - 不想上报统计:Settings→Privacy 关掉,或设 DO_NOT_TRACK=1 - 它会改写 ~/.claude/settings.json、~/.codex/config.toml,改前先备份 - 切完模型要开新会话才生效

  33. X@kohira_innocord · 5 likes · 250 views

    お! ねんでぶさんが@nendeb ポストされていたWordPressテーマIpsumが、サブメニューのはみ出しをテーマ側で修正したようですね! ipsum#188

  34. X@BkashJosi · 102 views

    Steps and the full mapping table (Grok Bot and OpenBot): hermes-agent.nousresearch.com Built by @Teknium: hermes-agent#147724

  35. X@QingQ77 · 3 likes · 1 repost · 566 views

    用 Claude Code 或 Codex 生成 Instagram 轮播图时不再靠单发 prompt碰运气,改为走脚本先确认、画廊当参考、每张渲染后质检的流程,产出符合品牌风格的轮播图。 guilhermealvestech/carrossel-skill t.co

  36. Redditu/Dragon4ikX · r/feedthebeast · 2 comments

    Blocky Music: four-lane rhythm battles against players and mobs, with osu! and FNF chart import (NeoForge 1.21.1) Hi! We're QwU World, a small team, and we just put out the first public beta of Blocky Music. Use the microphone item on a player or a mob and a rhythm battle starts: notes fall down four lanes, you hit them in time with the song, and whoever plays better wins. You can also play solo. What's in it: - Beatmaps come from an in-game Workshop (Alt+B): search, preview the song, install in one click. - A beatmap editor that starts from scratch or imports osu! (.osu/.osz) and Friday Night Funkin' charts. - Publish your beatmap, song and cover to the Workshop without leaving the game. - A DJ booth for parties: a playlist, an equalizer, visual effects, speakers and cameras. - MP3, WAV, FLAC, M4A and more are converted by the mod itself, no FFmpeg needed. - Each server keeps its own list of beatmaps. It's a beta, so some things will break. Bug reports and ideas are very welcome, here, on our forum or on Discord. Needs Minecraft 1.21.1 with NeoForge 21.1.219 or newer on both the client and the server, plus playerAnimator on the client. - CurseForge: curseforge.com - Beatmap Workshop: blocky-music.qwu.world - Mod page: qwu.world - Source code (MIT): QwU-World/blocky-music - Discord: discord.gg

  37. X@seuros · 1 like · 3 views

    @isbkch seuros/skipper The agent can try , but you have to accept.

  38. Redditu/SkyHighGam3r · r/decomps · 29 points · 6 comments · RetroPulse03/WinBackRecomp

    WinBack: Covert Operations (N64) With recomps exploding I kind of expected this one by now, but I forget that it’s kind of a hidden gem. It’s one of my all time favorites though, so I figured I’d give it a go. It’s super early, and yes it’s heavily Claude code assisted. The game is booting though and I will fix issues as I play test. Plan is to put some QoL options in the recomp menu, and make some mods for fun. Once I’m done and I have a decent grasp of the workflow I plan to tackle the PS2 version with a closer eye on detail. I fully expect at some point someone will make a better recomp of the N64 version, and I encourage it. This is for learning and fun for me. (Also finally an excuse to learn GitHub)

  39. Boosted from @brynify@fwoof.space: This new TTS engine is showing some promise. SharpVox: an experimental high-quality speech synthesizer. dectalk/SharpVoxTTS fwoof.space

  40. X@laogeai · 4 views

    远程连没有显示器的机器,分辨率被锁死在很小;想扩一块虚拟屏要改配置,还容易黑屏。 这个工具一条命令建虚拟显示器(可指定分辨率刷新率),扩展/镜像/仅远程用,删掉无残留。 dianariyanto/virtual-display-linux

  41. A little bit of an AI slop fun for anyone who wants to run own proxy for i2p, Tor or Nym mixnet and share it with friends through browser extension (Brave/Mozilla) article: free2z.cash github: zcat-app/stargate-v2

  42. X@zCat_App · 1 like · 28 views

    A little bit of an AI slop fun for anyone who wants to run own proxy for i2p, Tor or Nym mixnet and share it with friends through browser extension (Brave/Mozilla) article: free2z.cash github: zcat-app/stargate-v2

  43. X@ghj197605 · 2 views

    被 YAML 坑过吗?country: NO 变 false,version: 3.10 变 3.1。 SOML 用“语法即类型”终结猜测:'NO' 是字符串,NO 直接报错;30s 是时长,2027-09-19 是日期。 键名免引号、换行代逗号、路径免转义,还支持注释。 严格如 JSON,干净如 YAML。 soml-lang/soml

  44. DEV@om_shree_0709 · 7 reactions

    Chrome Is Open Source and Still Hard to Reverse Engineer. Here's Where the Real Work Is! You can read Chromium's source today, and people still spend years reverse engineering Chrome. The code isn't the hard part. The hard parts are the process model the code implies, the Google layer on top of it, and the behavior no design doc covers. This is a map of where that work pays off, and which repos and docs got there first. The Part You Don't Have to Reverse Start with what's documented, because most "Chrome internals" posts reverse-engineer things that are written down. The Chromium design docs tell you to begin with multi-process architecture. Most of the other design documents assume you've read it. The model is simple to state. The browser and renderers talk over Mojo or the legacy IPC system, and each renderer process has exactly one RenderProcess object. Mojo is also how the browser's own services talk to each other. The network service is designed as a Mojo service that doesn't need to know which thread or process it runs on. It can run in a utility process or inside the browser process. Site Isolation is where this pays off. Each renderer process can be locked to documents and workers from a single site, even when those documents sit in iframes. It isn't uniform across platforms. Desktop gets full site-per-process. Android gets a partial mode on devices with 2+ GB of RAM. Chrome for iOS runs on WebKit, which has no out-of-process iframe support. So "Chrome's security model" is really three models, and the one you reason about depends on the platform. The best primary source here is the paper from Charles Reis and the Chrome team on deploying Site Isolation. It covers the performance and compatibility problems of retrofitting a production browser with the new architecture. Read it for the tradeoffs the design docs leave out. If you want to test the boundary yourself, the security docs describe how. Passing --enable-features=MojoJS lets you call Mojo methods from JavaScript, which simulates a compromised renderer. That makes the renderer-to-browser Mojo interfaces your real attack surface. In the doc's own framing, calling a Mojo API can mean code execution in the browser process, which is a far worse outcome than code execution in the sandboxed renderer. V8 Is a Negotiation, Not a Pipeline Most developers know V8 "has a JIT." The useful model is that it's a tiering policy driven by runtime feedback. Maglev exists because the gap between Sparkplug and TurboFan was too wide. Until 2021 V8 had only Ignition and TurboFan, then added Sparkplug, and Maglev arrived in Chrome M117. The docs put the cost tradeoff at Maglev compiling about 10x slower than Sparkplug and about 10x faster than TurboFan. Per one writeup, TurboFan's internals were rebuilt onto Turboshaft by March 2025 without adding a fifth tier. The practical reverse-engineering move is reading the thresholds. v8pedia quotes the flag definitions for invocation counts at each tier, such as 400 for Maglev and 3000 for TurboFan. Treat those as a snapshot, since flag defaults change between V8 versions. Verify them against the source for the version you're analyzing. For the exploitation side, this curated resource list is the best single index I've found. It points to bug-hunting-101, Jack Halon's browser exploitation series and doar-e's TurboFan introduction. The list flags some entries as outdated, so check before relying on them. The Repos That Did the Real Reversing Three projects stand out. Each reverses a different layer. ungoogled-chromium reverses the Google dependency graph. Its premise is that Chromium still has some dependency on Google web services and binaries even without signing in. The interesting part is the method. It uses domain substitution, replacing Google domains in the source with non-existent ones ending in qjz9zk, plus binary pruning. A fail-safe blocks internal requests to those domains, in case Google introduces new components its patches don't disable. The patch set is effectively a map of every place Chromium phones home. chrome-devtools-mcp is Google reverse-exposing its own browser to agents. It's a TypeScript server wrapping Chrome DevTools and Puppeteer so that coding agents like Gemini, Claude, Cursor or Copilot can control and inspect a live Chrome. One detail matters before you point it at anything sensitive. It collects usage statistics and checks for updates by default, with flags to turn both off. The README also warns that it exposes browser content to the MCP client. js-reverse-mcp and the api-mapper skill turn Chrome into a reverse-engineering instrument for the sites inside it. The first traces function calls through logpoints and injects scripts before page load. The second captures XHR/Fetch traffic over CDP, inspects JS bundles when requests contain computed values, and probes endpoints with curl. Both reflect the same shift: the browser is now the reverse-engineering tool as well as the target. Where Google's Layer Shows Up: On-Device AI The most current example of Chrome diverging from Chromium is Gemini Nano. The APIs and the model are both built into Chrome, with the model downloaded on first use. It isn't on mobile, and from Chrome 140 it supports English, Spanish and Japanese. One analysis notes that when conditions are met, Chrome downloads the model in the background with no installation prompt. You can inspect all of it. Gemini Nano in Chrome documents the flags, the chrome://on-device-internals page, and a useful gotcha: Chrome's internal pages are built from web components with content in shadow DOM, so automation has to walk shadow roots. It reports a model footprint of roughly 4 GB on its test machine. That's one machine's number, and the docs say the size varies with updates. Why This Matters Beyond Chrome Three takeaways hold up across everything above. First, the real boundary is Mojo, not the tab. If you want to understand Chrome's security, read the interface definitions between renderer and browser. Second, Chrome is a platform with a diverging proprietary layer. Gemini Nano, DevTools-for-agents and the Google service dependencies that ungoogled-chromium strips out all sit above or beside the open core. Third, the browser has become an agent runtime. When Google ships an MCP server for its own browser, the reverse-engineering target moves from "what does Chrome do" to "what can an agent do through Chrome." Where to Start Read the multi-process architecture doc first. Then use Chromium Code Search to follow one navigation from RenderProcessHost outward. Use the ungoogled-chromium patch set as your map of Google dependencies, and run chrome-devtools-mcp against a throwaway profile. Chrome's code was never the secret. What you learn is how a billion-user browser makes its tradeoffs, and Google has written most of that down. Follow for more coverage on MCP, agentic AI, and AI infrastructure.

  45. Redditu/jimmysito · r/Clojure · 56 points · 9 comments

    clordle - a Wordle where every answer is a Clojure function play it at jimmysit0.github.io star the project! Jimmysit0/clordle

  46. Flutterで箱入り娘を作成する4 概要 Flutterで箱入り娘を作成し、iOS と Android のアプリとして販売する このシリーズでは、作り始めから販売までを順番に書いていく - 第3回:Flutterで箱入り娘を作成する3 - 第5回:Flutterで箱入り娘を作成する5 第4回では、次のことをする 遊んだ記録を端末に残す 一覧の行に、クリアの印と自分の手数を出す 途中でやめた盤面から続けられるようにする 実行環境 Flutter $ flutter --version Flutter 3.47.9 • channel stable • https://github.com/flutter/flutter.git Framework • revision c197ca5199 (4 days ago) • 2026-10-29 10:10:20 -0400 Engine • hash 9e025265bef30b838c0c1b68cad19decf97048f2 (revision 89c39edfdf) (6 days ago) • 2026-10-27 19:51:20.000Z Tools • Dart 3.13.7 • DevTools 2.60.0 手順 パッケージを入れる flutter pub add shared_preferences flutter pub add dev:shared_preferences_platform_interface 2つ目はテストだけで使う(後述)。 ファイルの構成 lib/ main.dart … 起動のときに記録を読み込む model/ progress.dart … 遊んだ記録 screen/ stage_list_screen.dart … ステージの一覧(前回から) game_screen.dart … 遊ぶ画面(前回から) test/ memory_store.dart … テスト用の、メモリの中だけの置き場 model/progress_test.dart screen/progress_screens_test.dart 以下のコードは主要な部分の抜粋(... は省略)。 何を残すか 残すのは、次の3つ。 | 残すもの | 使うところ | |---|---| | 配置ごとの、クリアしたうちでいちばん少ない手数 | 一覧の印と「自分 N 手」 | | 配置ごとの、途中の盤面と手数 | 途中から続ける | | 最後に開いた配置 | 一覧のいちばん上の「続きから」 | 一覧の印は4通りにする。 | 印 | いつ | |---|---| | 王冠 | 最短手数でクリアした | | ✓ | クリアした(最短より多い手数) | | 途中 | クリアしたことがなく、途中の盤面がある | | なし | まだ遊んでいない | - 行を押すと、途中の盤面があればそこから続ける。遊ぶ画面の「はじめから」で、途中の盤面を捨てる - 一度クリアした配置は、また途中でやめても、クリアの印のままにする(クリアしたことは消えないため) - 「続きから」は、最後に開いた配置に途中の盤面があるときだけ出す。クリアしたら消える 保存のパッケージを選ぶ shared_preferences を使う。 Flutter のチームが作っていて、iOS・Android のほか Web でも動く。 説明には、次のように書いてある。 > there is no guarantee that writes will be persisted to disk after returning, so this plugin must not be used for storing critical data. 書いたものが必ず端末に残るとは限らないので、大事なデータには使わない。 残すのは、消えても遊び直せば戻るものだけにする(今回の3つはどれもそう)。 - pub.dev 使い方は3通りある。 古い SharedPreferences は、いずれ使わなくなる予定なので、新しく書くコードでは SharedPreferencesWithCache か SharedPreferencesAsync を使う。 SharedPreferencesWithCache は、起動のときに一度だけ端末から読み込み、メモリに写しを持つ。 そのあとの読み出しは await なしで写しから読めるので、画面を作る build の中でそのまま使える。 記録のクラス 画面からは shared_preferences を直接触らず、Progress のクラスを通す。 - 「どの文字の名前で、どんな形の値を置くか」を1か所にまとめる - テストでは、置き場をメモリの中のものに差しかえられる(後述) /// 遊んだ記録。端末に残す。 class Progress { Progress._(this._prefs); /// 端末から記録を読み込む。 static Future<Progress> load() async { ... await SharedPreferencesWithCache.create( cacheOptions: SharedPreferencesWithCacheOptions(allowList: _keys), ), ... } final SharedPreferencesWithCache? _prefs; // 配置は名前で覚える(並び順を変えても記録がずれないように) static String _bestKey(NamedLayout layout) => 'best:${layout.name}'; static String _unfinishedKey(NamedLayout layout) => 'unfinished:${layout.name}'; static const _lastKey = 'last'; static final _keys = { _lastKey, for (final layout in namedLayouts) ...[ _bestKey(layout), _unfinishedKey(layout), ], }; ... } - 配置は、リストの番号ではなく名前で覚える。あとで配置を足したり並べ直したりしても、記録が別の配置にずれない - allowList には、使う名前を全部渡す。ほかのパッケージが同じ置き場に書いた値を、写しに読み込まない 読み出し /// クリアしたうちで、いちばん少ない手数。クリアしていなければ null。 int? best(NamedLayout layout) { final value = _prefs?.get(_bestKey(layout)); // 最短より少ない手数は、ありえないので読めない値とみなす return value is int && value >= layout.moves ? value : null; } 置き場の値は、アプリの外から書きかえられることもある。 型と中身を確かめて、おかしな値は「記録なし」として扱う。 途中の盤面を文字にする 途中の盤面は、1つの文字にして置く。 手数;駒,駒,… (例:3;s00,s10,d20,h01,…) 駒は、種類の頭文字(d = 娘、v = 縦長、h = 横長、s = 小さい駒)と、左上の x と y。 static String _encode(Board board, int moves) => '$moves;${board.pieces.map((p) => '${_letters[p.type]}${p.x}${p.y}').join(',')}'; /// 読めない値・[layout] と駒の数がちがう盤面・クリアした盤面は null。 static Unfinished? _decode(NamedLayout layout, String text) { final match = RegExp(r'^([1-9]\d{0,8});((?:[dvhs]\d\d,)*[dvhs]\d\d)$') .firstMatch(text); if (match == null) return null; ... if (!_sameKinds(pieces, layout.board.pieces)) return null; final Board board; try { board = Board(pieces); } on ArgumentError { return null; } if (board.isSolved) return null; return Unfinished(board, int.parse(match[1]!)); } - 駒の並び順は、盤面のままにする。読み戻したときに、遊ぶ画面が「何番目の駒をなぞったか」で動かせるように - 読み戻すときは、文字の形 → 駒の種類ごとの数 → 盤からはみ出さないか・重ならないか(第1回の Board が確かめる)→ クリアした盤面でないか、の順に確かめる クリアを書く /// [moves] 手でクリアしたことを覚え、途中の盤面を忘れる。前より少ない手数のときだけ、いちばん少ない手数を書きかえる。 /// 読み出しに使う写しへは、待たずにすぐ入る(端末へ書き終わるのはあと)。 Future<void> recordClear(NamedLayout layout, int moves) { final best = this.best(layout); return Future.wait([ if (_prefs != null && (best == null || moves < best)) _prefs.setInt(_bestKey(layout), moves), clearUnfinished(layout), ]); } SharedPreferencesWithCache の setInt などは、呼んだときにメモリの写しを書きかえ、端末へはそのあと書く。 なので、書いた直後に読み出すと、もう新しい値になっている。 画面につなぐ 起動のときに読み込む Future<void> main() async { // 記録を読み込むには、アプリの画面より先に端末とのつなぎを用意しておく WidgetsFlutterBinding.ensureInitialized(); runApp(KlotskiApp(progress: await Progress.load())); } runApp より前に端末の機能を使うときは、先に WidgetsFlutterBinding.ensureInitialized() を呼ぶ。 遊ぶ画面で、1手ごとに書く @override void initState() { super.initState(); final unfinished = _progress.unfinished(_layout); _board = unfinished?.board ?? _layout.board; _moves = unfinished?.moves ?? 0; // 書き終わるのは待たない(画面は先に出す)。以下の書き込みも同じ unawaited(_progress.open(_layout)); } void _move(int index, Piece to) { ... unawaited( _board.isSolved ? _progress.recordClear(_layout, _moves) : _progress.saveUnfinished(_layout, _board, _moves), ); } - 書き込みは待たない。指を離すたびに書き終わるのを待つと、次の手が遅れるため - 待たないことをはっきりさせるため、unawaited(dart:async)で包む 一覧で、印と「続きから」を出す final best = _progress.best(layout); // 印:クリアしたことがあればクリアの印(最短なら王冠)。無ければ、途中の盤面があるとき途中の印 final (IconData, String)? mark = best == layout.moves ? (Icons.emoji_events, '最短でクリア') : best != null ? (Icons.check_circle, 'クリア') : _progress.unfinished(layout) != null ? (Icons.timelapse, '途中') : null; ... subtitle: Row( children: [ if (mark != null) ...[ Icon( mark.$1, size: 16, color: colors.primary, semanticLabel: mark.$2, ), const SizedBox(width: 4), ], Flexible( child: Text( best == null ? '最短 ${layout.moves} 手' : '最短 ${layout.moves} 手 自分 $best 手', ... - 印と読み上げの言葉を、レコード (IconData, String) でまとめて持つ - 印は形だけで分かるように、王冠・✓・時計の形を変える(色だけで分けない) - semanticLabel で、画面の読み上げ機能でも「最短でクリア」などと読ませる 遊ぶ画面から戻ったら、一覧を新しくする 一覧の画面は StatefulWidget にして、遊ぶ画面を閉じたら setState で作り直す。 /// 遊ぶ画面を開き、戻ってきたら記録の印を出し直す。 Future<void> _open(NamedLayout layout) async { await Navigator.of(context).push( MaterialPageRoute<void>( builder: (context) => GameScreen(layout: layout, progress: _progress), ), ); if (mounted) setState(() {}); } - Navigator.push の Future は、その画面を閉じたときに終わる。await のあとが「戻ってきたとき」になる - await のあいだに一覧の画面が消えていることもあるので、mounted を確かめてから setState する 記録が壊れたとき 端末によっては、記録のファイルが壊れていると、SharedPreferencesWithCache.create がエラーになる(壊れ方によって FormatException も TypeError も出る)。 main で読み込みを待ってから runApp しているので、そのままだと画面が出ないまま止まる。 読み込みでエラーが出たら、記録なしで始める。 static Future<Progress> load() async { try { return Progress._( await SharedPreferencesWithCache.create( cacheOptions: SharedPreferencesWithCacheOptions(allowList: _keys), ), ); } catch (e, stack) { // 壊れ方によって、FormatException も TypeError(Exception でない)も出るので、全部受け止める debugPrint('記録を読み込めなかったので、記録なしで始める: $e\n$stack'); return Progress._(null); } } - on Exception だと、Exception でない TypeError を受け止められない - 置き場が null のときは、読み出しは全部「記録なし」、書き込みは何もしない(_prefs?.get(...) など) - 遊べないよりは、記録なしで遊べる方がよい。壊れた記録は、どのみち読めない テスト 置き場をメモリの中のものにする テストでは、端末の置き場を InMemorySharedPreferencesAsync に差しかえる。 shared_preferences 自身のテストでも使われているもので、shared_preferences_platform_interface に入っている。 /// 端末の置き場を、メモリの中だけのものにする([data] は始めから入っている値)。 void useMemoryStore([Map<String, Object> data = const {}]) { SharedPreferencesAsyncPlatform.instance = InMemorySharedPreferencesAsync.withData({...data}); } /// 端末の置き場を、読み込むと [error] を投げるもの(記録のファイルが壊れたとき)にする。 void useBrokenStore([Object error = const FormatException('壊れた記録')]) { SharedPreferencesAsyncPlatform.instance = _BrokenStore(error); } base class _BrokenStore extends InMemorySharedPreferencesAsync { ... @override Future<Map<String, Object>> getPreferences( GetPreferencesParameters parameters, SharedPreferencesOptions options, ) => throw error; } withData で始めから値を入れておけるので、「壊れた値が入っていたら」も書ける。 for (final (why, value) in [ ('空', ''), ('手数が 0', good.replaceFirst('1;', '0;')), ('知らない駒', good.replaceFirst('d', 'x')), ('駒が重なる', good.replaceFirst(RegExp(r'd\d\d'), 's00')), ('盤からはみ出す', good.replaceFirst(RegExp(r'd\d\d'), 'd33')), ('クリアした盤面', solvedCode), ... ]) { test(why, () async { useMemoryStore({key: value}); expect((await Progress.load()).unfinished(first), isNull); }); } - 「読める見本」のテストも1つ置く。見本が読めないと、下の「読めない」のテストが全部、別の理由で通ってしまうため 起動のテスト 置き場を壊れたものにして、本物の main を呼ぶ。 testWidgets('記録のファイルが壊れて読み込めなくても、アプリは立ち上がって一覧を出す', (tester) async { useBrokenStore(); await app.main(); await tester.pump(); expect(find.text('1. 前呼後擁'), findsOneWidget); }); flutter test アプリの実行 アプリを起動 flutter run 実行結果 !klotski4.gif 次回 詰まったときに、今の盤面からの解き方を見せる。

  47. Redditu/Cactus_Thorn_Pub · r/ClaudeAI · 1 point · 4 comments

    Claude Chat used calculus to create an Android game that knows when to bluff when playing lowball poker against a human. The most popular poker game at the moment appears to be "Texas Hold 'em," which I detest. One can find computer games for "Texas Hold 'em" by the score, but my search for a good lowball game yielded garbage. I asked Claude for a lowball game, and told it what I wanted the game to look like and do. The first thing I wanted a player to see is a disclaimer regarding the game having no internet access, and no actual financials in it. Then I wanted the next screen to include access to an explanation for how the game is played, and specifically how California Lowball is played. There is an "easy play" mode, a "medium play" mode, and a "hard play" mode. The "hard" version needed the most work, as it works out the most statistically likely decision that will yield a profit higher than all other players, including other computer opponents. The came computer looks at patterns in wagering; how many times a player was caught bluffing; when it is most advantageous for the computer to bluff; the most advantageous wager that will keep the profit above the sum (in dollars) of the other players if the decision it will make causes a loss of the hand; when to stand pat and when to draw cards, and how many to draw. Claude also "folded in" the computer remembering the sub-optimum decisions the human player makes, and exploits that recall when the computer makes its decisions. The statistical analysis of playing "the perfect game of poker" came from "THE ENDGAME IN POKER" written by Chris Ferguson, 'Full Tilt Poker,' and Tom Ferguson, 'Mathematics, UCLA'" via .PDF file. I do not know who these two humans are, nor do I know if what they wrote is correct. DesertSoliloquy/Lowball

  48. Find Me Online — Muhammad Afzal Kalwar (mafzalkalwardev) I'm Muhammad Afzal Kalwar, a Python automation engineer and founder of INDUS Web Agency in Islamabad. I build automation scripts, web scrapers, AI voice/call agents, auto dialers, CRMs and Chrome extensions. Every profile I use goes under the same handle, mafzalkalwardev. Here they all are in one place. Portfolio and hiring - Portfolio: mafzalkalwardev.github.io. Projects, services, demos and contact details. - Services: mafzalkalwardev.github.io - Upwork: Hire me on Upwork - LinkedIn: linkedin.com Code - GitHub: github.com/mafzalkalwardev - GitLab: gitlab.com - Kaggle: kaggle.com - Stack Overflow: Muhammad Afzal Kalwar Writing - dev.to: dev.to - Hashnode: mafzalkalwardev.hashnode.dev - Substack: substack.com Community and visuals - Peerlist: peerlist.io - X: x.com - Pinterest: pinterest.com - Behance: behance.net - All links: linktr.ee If you need automation, scraping or a call/CRM system built, reach me through the portfolio or Upwork.

  49. X@DropRadar_io · 21 views

    它是个 MCP 插件:工具跑出来的大段原始输出关在沙箱里,只把结果交给模型;改过的文件、踩过的坑记进本地 SQLite,压缩后按需搜回来。 Claude Code 两行命令装好,Codex 等也能用。注意是 ELv2 协议,不能拿去做托管服务。 以前聊着聊着就失忆,现在能一口气干到底! mksglu/context-mode

Older posts →