| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Point the issue chooser at a repository that exists The Contributing link resolved to feder-cr/Auto_Jobs_Applier_AIHawk on a branch v3. That repository name is not this one and the link was dead, so the one piece of guidance offered before opening an issue went nowhere. The Telegram entry kept its target and gained the scheme it was missing: t.me/AIhawkCommunity without https is not a URL. | 7 天前 | |
Give every wiki page a view counter of its own (#1265) * Give every wiki page a view counter of its own A GitHub wiki serves no per-page analytics. The traffic API reports the ten most visited paths over fourteen days and nothing below that, so a corpus of 61 pages is invisible by construction: measured today, not one individual wiki page reaches that top ten on either property. We know which pages rank and not which ones get read. Each page now embeds a 68-byte transparent 1x1 PNG held as an asset of an article-views release, the way the browser launch counter has worked since May: the asset's download count is how many times the page was loaded. The release is created with make_latest=false, so it never becomes the repository's Latest. What that number is not, measured rather than assumed: four deliberate loads produced six counts, so it carries fetches we did not make and cannot separate, download_count being a bare integer with no provenance. It counts fetches and not visitors, crawlers like readers, and nothing at all for a reader who blocks images. It is for comparing pages and days. The pixel goes into the wiki only, never back into docs/: the wiki is the surface that ranks, while the .md in the repository is served as a JSON payload React mounts, so a counter there would measure almost nothing and put markup in the source tree. build_wiki.py writes no pixel unless it is told which repository it builds for, which is right for a local preview and silent otherwise - a wiki published that way looks entirely normal and counts nothing. So the workflow passes the flag and then gates on it: the checker refuses a page with no pixel, with two, or with one addressed elsewhere, and its own eleven known-bad cases run first. * Pace the first upload run, and say it in English The first run on an existing corpus uploads one asset per page and GitHub throttles bursts of content-creating requests with a 403 or 429 carrying Retry-After. That burst happens before the wiki push, so a throttle would have blocked the publish itself on the one run nobody gets to rehearse. Honour the header, retry, and pace the loop at a tenth of a second. The backoff has its own three known-bad cases against a fake throttling server, because retry code that has never once retried is not retry code. A 404 stays unretried on purpose: reading one is how a missing release is found. And the file was carrying Italian identifiers and test names into a public repository. The language gate reads git ls-files, so running it before the file was tracked was running it against a world where the file did not exist. | 1 天前 | |
Use the same code of conduct as the other repositories Replaces the long-form Contributor Covenant with the condensed v2.1 text this account's other projects carry, so one wording covers all of them instead of two that can drift. It keeps the same standards and adds what the previous one did not have: a named contact for reporting, which is the part of a code of conduct that has to be actionable rather than declarative. | 7 天前 | |
The MCP server moves in: aihawk.mcp, one package, one release (0.10.0) (#1253) * Squashed 'incoming-mcp/' content from commit f0cb73e git-subtree-dir: incoming-mcp git-subtree-split: f0cb73eef0241e4fe755447491d8839089faec8e * The MCP server moves in: aihawk.mcp, one package, one release (0.10.0) The server lived in its own repository, invisible-playwright-mcp, with four stars against thirty thousand here, and every change to it landed twice: a floor to raise here, a verb table to keep in step, a README that was already a pointer at this one. It now ships inside this package as the module aihawk.mcp, started by the invisible-playwright-mcp command or by python -m aihawk.mcp, which is what the interface spawns. The module is renamed on purpose: a wheel of aihawk owning the old module's files would have them deleted by pip when the old package is uninstalled during an upgrade. The PyPI name invisible-playwright-mcp lives on as a shim, a compatibility module and the same console script over aihawk, so every client registered with uvx invisible-playwright-mcp keeps working; the shim is published from the old repository right after this release, and that repository is then archived, never deleted. What moved: the ten modules under src/aihawk/mcp, twenty-six test files under tests/mcp_server (the two that guarded the standalone package's own version and release pages are gone, aihawk's cover the wheel), the server's README as the wiki page mcp-server and its tool-design notes as mcp-tool-design, with the nineteen wiki links that pointed at the old repository retargeted. The dependency on the server becomes the server's own dependencies (mcp capped below 2, invisible-playwright with its floor, selectolax). The publish gate checks the engine floor instead of the server floor, the wheel checks prove the module and the second console script, and a new e2e job runs the server's browser tests on one platform the way its own CI did. aihawk's __version__ was a stale literal and now reads the installed distribution. Measured before this commit, with the built wheels: default suite 333 passed, the e2e subset 21 passed against a cached engine, the clean-venv install answers on both commands, pip upgrade paths from 0.15.2 and from aihawk 0.9.2 end with the old import reaching aihawk.mcp, and uvx with an empty cache resolves the shim to this wheel and drives a page. | 3 天前 | |
First | 1 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 天前 | ||
| 1 天前 | ||
| 7 天前 | ||
| 3 天前 | ||
| 1 年前 |