3972 Commits
Author SHA1 Message Date
Tommaso Casaburi 07543646af Merge branch 'codex/chore/ai-workflow-parity' 2026-08-02 17:54:18 +02:00
Tommaso Casaburi 20f8bd902c fix(scripts): treat an omitted agent model as harness-specific in the parity check
`normalizeAgent` rewrote the first `model:` frontmatter line when one was
present, so an agent that pins a model in one toolchain and omits it in another
normalized to different text and looked like body drift.

The bug is latent here rather than firing: every agent whose `.claude` copy
omits `model:` currently has a `.cursor` copy that omits it too. Pinning a
Cursor-only model on any of them turns the gate red for a non-reason —
reproduced by adding `model: composer-2.5-fast` to
`.cursor/agents/code-quality.md`, which fails before this change and passes
after it. The same defect was failing on seedit's master, where those Cursor
copies do pin a model.

Strip the frontmatter `model:` line instead of rewriting it. Scoping the strip
to the leading frontmatter block keeps a body line that begins with "model:"
comparable, so it is still reported as drift. Verified that injected body drift
is still caught.
2026-08-02 17:54:16 +02:00
Tommaso Casaburi 9caee7f831 Merge branch 'codex/chore/pw-session-home-fallback' 2026-08-01 19:36:06 +02:00
Tommaso Casaburi 1a7d756d89 fix(scripts): resolve the pw-session lock path without requiring HOME
`lock_root` dereferenced `$HOME` unconditionally, so under `set -u` the script
died with "HOME: unbound variable" in any environment that starts without it —
even when `PLAYWRIGHT_RESOURCE_LOCK_DIR` made HOME irrelevant. Surfaced by
running the suite under vitest's node environment, where `process.env` is
patched and spreading it does not carry HOME through to the child.

Resolve the lock path in order (explicit override, XDG_CACHE_HOME, HOME) and
fail with a clear message only when none of them is set. The test now names
PATH and HOME explicitly instead of spreading process.env.
2026-08-01 19:36:04 +02:00
Tommaso Casaburi 600fd68414 Merge branch 'codex/chore/browser-resource-budget' 2026-08-01 19:27:47 +02:00
Tommaso Casaburi cc467d4f6f Merge branch 'codex/chore/oxfmt-drift' 2026-08-01 19:27:39 +02:00
Tommaso Casaburi 82adee9642 chore(format): apply oxfmt to the math-tags test
`src/lib/__tests__/math-tags.test.ts` was committed unformatted in #1170, so
`yarn prettier` rewrote it on every unrelated run and contributors had to
remember to revert the churn. The assertion collapses to 153 characters, well
under the configured printWidth of 170.

No other file under `src/**` or `electron/**` is formatter-dirty. Neither
`.oxfmtrc.json` nor the oxfmt version has changed since that commit, so the
drift came from a bypassed lint-staged pre-commit hook rather than a config
change.
2026-08-01 19:26:38 +02:00
Tommaso Casaburi 1a33f7dc88 chore(agents): add a machine-wide Playwright browser resource budget
Playwright disables normal background throttling, so a hidden 5chan page keeps
doing P2P and rendering work after a check finishes. Agents verifying in
parallel across worktrees stacked whole browser engines on one machine.

Add scripts/pw-session.sh, a wrapper that permits one active Playwright browser
at a time and records who holds it:

- The lock is machine-wide, not per-repository, because the contended resource
  is RAM and CPU. Every worktree and checkout shares one slot.
- Acquisition is an atomic mkdir. Stale locks clear themselves: `open` reclaims
  any slot whose recorded browser is no longer `status: open` in
  `playwright-cli list --all`, so an interrupted workflow cannot strand the
  budget. When that list cannot be read the lock is left alone, so a broken CLI
  never silently disables the budget.
- `open` exits 75 when the slot is busy; `--wait[=SECONDS]` blocks instead.
- `close` always stops the browser, even when the lock was already lost, and
  never releases a slot held by a different session.
- `status` reports the holder and whether its browser is still alive.

Agent policy now runs browser engines and profiler batches sequentially, uses
Chrome/Blink during iteration and the full engine matrix only for final
verification, and never uses `close-all` or `kill-all` while other agents may
own sessions.

Covered by scripts/pw-session.test.js.
2026-08-01 19:21:01 +02:00
Tommaso CasaburiandGitHub a9040a5425 perf(settings): speed up board settings navigation (#1191)
* perf(settings): speed up board settings navigation

* perf(settings): parallelize account section loading
2026-08-01 19:12:20 +02:00
Tommaso Casaburi 660cdf8a2d fix(board-header): keep banner stable during directory route resolution
Key the banner image by route identifier instead of the resolved community address so directory candidates do not reshuffle the banner mid-load.
2026-08-01 18:51:28 +02:00
Tommaso CasaburiandGitHub a67c66de0d perf(electron): speed up Windows packaging with ASAR (#1190)
* perf(electron): package Windows app with ASAR

* fix(electron): use portable ASAR unpack glob

* fix(electron): unpack native modules from ASAR
2026-08-01 12:50:23 +02:00
Tommaso Casaburi f2f6c0ecb7 fix(deps): deduplicate pkc-js for Windows packaging v0.9.16 2026-07-30 02:31:16 +08:00
Tommaso Casaburi 5d595a9812 chore(release): v0.9.16 2026-07-30 01:57:49 +08:00
Tommaso CasaburiandGitHub da03239bb2 perf: reduce browsing rerenders and startup cost (#1189)
* chore(profiling): collect serializable react-scan reports

* perf(routing): rerender only when directory winner changes

* perf(zustand): remove shallow warning hot path

* perf(state): narrow directory lifecycle updates

* perf(home): avoid redundant stats render work

* perf(posts): isolate live loading subscriptions

* perf(chrome): skip unchanged shell rerenders

* fix(profiling): drop unsupported render metric

* perf(feeds): skip unchanged loading state renders

* perf(home): stop resolved stats collector renders

* chore(agent run): record rerender verification

* perf(home): defer stats requests until metadata resolves

* perf(startup): load protocol modules on demand

* chore(agent run): record acquisition and startup profiles
2026-07-30 00:29:12 +07:00
Tommaso Casaburi 27cc4767c6 fix(transfer): link trash transfer success to new post 2026-07-28 15:01:25 +07:00
Tommaso Casaburi 56b22e7ea9 fix(transfer): hide transferred label on trash board posts
Posts moved to /trash/ should not show the transferred tag since the move is the intended outcome.
2026-07-28 14:28:37 +07:00
Tommaso Casaburi de47749c52 chore(deps): upgrade react-router-dom to 7.18.1 for Dependabot alerts
Clears GHSA-wrjc-x8rr-h8h6 (open redirect via backslash in <Link>/useNavigate)
and GHSA-337j-9hxr-rhxg (arbitrary constructor injection in deserializeErrors),
neither of which has a 6.x backport. Drops the now-unused @remix-run/router
resolution, since v7 no longer depends on it.
2026-07-26 16:06:48 +07:00
Tommaso Casaburi c48ea43ee3 fix(directory): center loading ellipsis in status column
Add a centered loading ellipsis variant and use it for directory row loading states.
2026-07-25 15:57:34 +07:00
Tommaso Casaburi bc819336c4 chore(agents): inherit session model for judgment-tier subagents
Drop the pinned `model: sonnet` from the reasoning-heavy subagents so they
follow the session model instead of being forced down to Sonnet. Running an
Opus session now gets Opus subagents; deliberately dropping to a cheaper
session model is respected too.

Mechanical agents (browser-check, profiler, translator) keep their haiku pin
— that pin is a capability statement, not a stale default, and should hold
regardless of session model.
2026-07-25 15:07:01 +07:00
Tommaso Casaburi 8ac0d68bfd chore(deps): bump transitive deps to clear dependabot alerts
Raise resolution pins to the patched versions for 14 open Dependabot
alerts (1 critical, 8 high, 5 medium):

- brace-expansion 1.1.14 -> 1.1.16, 2.1.0 -> 2.1.2, 5.0.7 -> 5.0.8 (DoS)
- tar 7.5.16 -> 7.5.22 (decompression DoS, infinite loop, PAX crashes)
- postcss 8.5.15 -> 8.5.23 (source map path traversal)
- fast-uri 3.1.2 -> 3.1.4 (host confusion)
- sharp 0.34.5 -> 0.35.3 (inherited libvips CVEs)
- shell-quote 1.8.4 -> 1.9.0 (quadratic parse DoS)
- js-yaml 4.2.0 -> 4.3.0 (merge-key CPU exhaustion)

The two react-router advisories (GHSA-wrjc-x8rr-h8h6, GHSA-337j-9hxr-rhxg)
are not addressed: they are only patched in 7.18.0 and 6.30.4 is the final
v6 release, so clearing them needs a v6 -> v7 migration.
2026-07-25 14:02:33 +07:00
Tommaso Casaburi 35a574362b feat(banners): add banner-6 2026-07-25 13:53:03 +07:00
Tommaso CasaburiandGitHub c437b59850 chore(deps): upgrade bitsocial-react-hooks to 0.1.32 (#1188) 2026-07-25 13:51:30 +07:00
Tommaso CasaburiandGitHub 7538403b4c fix(composer): preserve drafts by location (#1186)
* fix(composer): preserve drafts by location

* fix(composer): address review feedback

* fix(composer): remount drafts on location changes
2026-07-24 16:42:00 +07:00
Tommaso CasaburiandGitHub a91c5b588b fix(community status): use sync lifecycle for availability (#1187)
* chore(deps): upgrade pkc-js to 0.0.72 and bitsocial-react-hooks to 0.1.31

Update bitsocial internals import paths for the new package dist layout.

* fix(community status): use sync lifecycle for availability

* fix(community status): handle terminal sync without cache

* fix(directory routing): resolve candidate sync aliases

* fix(directory routing): preserve fresh cached winners
2026-07-24 16:36:09 +07:00
Tommaso Casaburi 047bb1d5ab chore(skills): drop GitHub issue/project finalization from PR workflow skills
GitHub Projects are no longer used in this repo. Remove issue/project
finalization from review-and-merge-pr and the project-board step from
make-closed-issue in all three toolchain mirrors, record the surprise
in known-surprises.md, and regenerate llms files.
2026-07-23 18:59:30 +07:00
Tommaso Casaburi 0f2c56440c fix(author badges): recognize legacy developer address 2026-07-23 16:42:44 +07:00
Tommaso Casaburi 0ddf25bb44 fix(home stats): include replies in total post count 2026-07-23 16:27:59 +07:00
Tommaso Casaburi 01e5bdf19a chore(deps): upgrade @chenglou/pretext to 0.0.8
Update pretext height estimation to use layoutNextLineRange from the new release.
2026-07-22 12:37:03 +07:00
Tommaso Casaburi 715acb4c9a chore(deps): bump axios, protobufjs, and brace-expansion for Dependabot alerts
Resolve open security advisories by pinning patched versions in Yarn resolutions.
2026-07-22 12:09:03 +07:00
Tommaso Casaburi cfcb8cdb8c style(footer): shrink Bitsocial logo to 18px and drop 1px 2026-07-20 16:52:22 +07:00
Tommaso Casaburi 829e90d65c fix(footer): point About link to 5chan app page 2026-07-20 16:34:47 +07:00
Tommaso Casaburi 4aef06b56c Merge branch 'codex/feature/footer-bitsocial-attribution'
Add Bitsocial attribution to site legal meta footer.
2026-07-20 16:33:50 +07:00
Tommaso Casaburi 192007d632 feat(footer): add Bitsocial attribution to site legal meta
Show a powered-by Bitsocial link with logo in the footer license line and add translations for the new copy.
2026-07-20 16:33:44 +07:00
Tommaso Casaburi 87553414a8 fix(transfer): publish trash board transfers with canonical community name
Use the trash board address as communityAddress and communityName instead of the public key, while still passing communityPublicKey for identity.
2026-07-20 16:22:57 +07:00
Tommaso Casaburi 32dea15e86 chore: upgrade react-grab to 0.1.48 2026-07-19 14:44:32 +07:00
Tommaso Casaburi e6dc405faf chore: upgrade react-doctor to 0.8.1 2026-07-19 14:35:27 +07:00
Tommaso Casaburi 3431c26755 chore(data): replace plebeius.bso with bitsocialist.bso
Update board directory owners, known developer registry, and related tests to use the new bitsocialist.bso address.
2026-07-18 16:43:39 +07:00
Tommaso Casaburi bbc2d5860d chore(release): v0.9.15 v0.9.15 2026-07-17 16:37:51 +07:00
Tommaso Casaburi e74952a016 Merge branch 'codex/fix/thread-cid-community-route'
Resolve thread community from CID and redirect stale directory routes.
2026-07-17 16:32:06 +07:00
Tommaso Casaburi cb15128ee8 fix(post): resolve thread community from CID and redirect stale routes
Fetch the comment community from the CID payload for initial useComment hints, and redirect directory thread URLs to the authoritative community instead of 404.
2026-07-17 16:32:01 +07:00
Tommaso Casaburi d0c515e70f fix(deps): upgrade @libp2p/gossipsub to 16.0.4 for CVE-2026-49866
Resolves Dependabot alert #302 (CPU DoS via oversized IHAVE/IWANT arrays).
2026-07-17 15:03:51 +07:00
Tommaso Casaburi e14efac63a chore(deps): upgrade bitsocial-react-hooks to 0.1.30 and bso-resolver to 0.0.10 2026-07-14 16:43:34 +07:00
Tommaso Casaburi eadf048d5e fix(android): support TypeScript 7 builds v0.9.14 2026-07-14 15:02:30 +07:00
Tommaso Casaburi 8cf425717b chore(release): v0.9.14 2026-07-14 14:54:02 +07:00
Tommaso Casaburi 3d49781c3d chore(deps): upgrade bitsocial-react-hooks to 0.1.29 2026-07-14 14:14:09 +07:00
Tommaso Casaburi 2068894cbd chore(deps): upgrade pkc-js to 0.0.71 2026-07-14 14:04:41 +07:00
Tommaso Casaburi e3f45a6112 fix(ui): hide account author ID on pending replies 2026-07-14 01:08:04 +07:00
Tommaso CasaburiandGitHub e5e46907d6 fix(routing): avoid nested hashes in shared links (#1185) 2026-07-11 00:09:30 +07:00
Tommaso Casaburi 1e9cdab9a6 chore(deps): bump pkc and hooks packages 2026-07-10 20:26:23 +07:00
Tommaso Casaburi 7ff9c19331 chore(ai workflow): add Ponytail simplicity pass 2026-07-10 15:30:55 +07:00