2789 Commits

Author SHA1 Message Date
Tommaso Casaburi
a30cd8b6a9 chore(deps): upgrade react-router-dom to 7.18.1, bump postcss and brace-expansion
Clears GHSA-337j-9hxr-rhxg and GHSA-wrjc-x8rr-h8h6 (no 6.x backport) plus
GHSA-jjmj-jmhj-qwj2, which has no patch at all on the react-router-dom 6.30.x
line. Drops the now-unused @remix-run/router resolution.

Also pins postcss 8.5.23 (GHSA-r28c-9q8g-f849, GHSA-6g55-p6wh-862q) and adds
the brace-expansion ^5.0.5 descriptor, which was still resolving to 5.0.6.
2026-07-26 17:31:38 +07:00
Tommaso Casaburi
ab32419c07 chore(deps): bump transitive deps to clear Dependabot alerts
sharp 0.34.5 -> 0.35.3 (GHSA-f88m-g3jw-g9cj), shell-quote 1.8.4 -> 1.9.0
(GHSA-395f-4hp3-45gv), fast-uri 3.1.2 -> 3.1.4 (GHSA-4c8g-83qw-93j6,
GHSA-v2hh-gcrm-f6hx), and brace-expansion 1.1.13/2.0.3/5.0.6 ->
1.1.16/2.1.2/5.0.8 (GHSA-3jxr-9vmj-r5cp).

elliptic GHSA-848j-6mx2-7j84 has no patched release, so it stays.
2026-07-26 16:08:38 +07:00
Tommaso Casaburi
38e42b0b5a 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:03 +07:00
Tommaso Casaburi
a3c6246b28 feat: add responsive feed pagination defaults (#830)
* feat(feed): add responsive pagination defaults

* fix(feed): keep initial loading state visible

* fix(feed): guard manual page loading

* fix(feed): separate community pagination state

* fix(feed): stop exhausted and offline loading
2026-07-23 19:27:25 +07:00
Tommaso Casaburi
67e06298d5 Merge branch 'codex/fix/s-prefix-only'
Update find communities copy to use s/all prefix.
2026-07-23 19:06:37 +07:00
Tommaso Casaburi
cc117ef21a fix(i18n): update find communities copy to use s/all prefix
Replace stale p/all references in the no-subscriptions message across all locales.
2026-07-23 19:06:32 +07:00
Tommaso Casaburi
98ebe899d2 chore(skills): drop linked-issue finalization from review-and-merge-pr
Keep the PR review/merge workflow independent of GitHub issues and
Projects, matching bitsocial-react-hooks. Update all three toolchain
mirrors, record the surprise in known-surprises.md, and regenerate
llms files.
2026-07-23 19:00:49 +07:00
Tommaso Casaburi
4e0bfc49b3 fix(publishing): abandon publications when challenges close (#829)
* fix(publishing): abandon publications when challenges close

* refactor(publishing): share challenge abandon hook
2026-07-23 18:49:24 +07:00
Tommaso Casaburi
8cf73d7728 feat(share): use s.seedit.app subdomain for share links
Generate post share URLs on s.seedit.app and recognize the subdomain when parsing external Seedit links.
2026-07-21 17:43:51 +07:00
Tommaso Casaburi
9b20300b63 fix(sidebar): remove community title route prefix 2026-07-21 17:10:03 +07:00
Tommaso Casaburi
14aef59267 Merge branch 'codex/fix/directory-topbar-labels'
Link directory defaults by code in topbar and document hybrid routing.
2026-07-21 17:00:58 +07:00
Tommaso Casaburi
a418b2d076 Merge branch 'codex/chore/remove-github-projects'
Remove GitHub Projects integration from agent workflows.
2026-07-21 17:00:57 +07:00
Tommaso Casaburi
120f43086f docs(directories): explain hybrid routing model 2026-07-21 16:50:01 +07:00
Tommaso Casaburi
57ac0118e5 fix(topbar): link directory defaults by code 2026-07-21 16:49:58 +07:00
Tommaso Casaburi
9a1f35fc67 chore(agent workflows): remove GitHub Projects integration 2026-07-21 16:43:35 +07:00
Tommaso Casaburi
876cbe60eb fix(deps): bump axios to 1.18.1 for Dependabot alerts
Resolves five open advisories (GHSA proxy inheritance, form serializer
maxDepth bypass, HTTP/2 maxBodyLength bypass, NO_PROXY bypass, and
auth prototype pollution) by pinning axios to 1.18.1.
2026-07-21 16:41:34 +07:00
Tommaso Casaburi
18a1c096d1 Merge branch 'codex/fix/fakepost-subscribe-label'
Update fakepost subscribe label images.
2026-07-20 18:29:34 +07:00
Tommaso Casaburi
d52b7e5d35 fix(assets): update fakepost subscribe label images
Refresh the light and dark fakepost subscribe button assets.
2026-07-20 18:29:27 +07:00
Tommaso Casaburi
e2cd70cedb Merge branch 'master' of github.com:bitsocialnet/seedit 2026-07-20 18:09:55 +07:00
Tommaso Casaburi
7a01633683 Add competitive directory routes with exact subscriptions (#827)
* feat(directory data): add versioned route snapshots

* feat(directory subscriptions): preserve exact account state

* feat(directory routes): add contested short-route UX

* docs(directory routes): record identity boundary

* fix(directory sync): pin GitHub snapshot ref

* fix(directory routes): address review edge cases
2026-07-20 16:44:42 +07:00
Tommaso Casaburi
26c0488bea chore: upgrade react-grab to 0.1.48 2026-07-19 14:44:30 +07:00
Tommaso Casaburi
2812edc5e2 chore: upgrade react-doctor to 0.8.1 2026-07-19 14:35:25 +07:00
Tommaso Casaburi
a0b8d85969 Remove unsupported providers and align .bso parity (#825)
* fix(addresses): remove unsupported address providers

* fix(settings): keep only Ethereum chain providers

* feat(addresses): present ENS aliases as .bso

* refactor(avatars): remove avatar functionality

* feat(parity): align terminology and settings upgrades

* fix(community routes): canonicalize .bso URLs
2026-07-18 17:27:13 +07:00
Tommaso Casaburi
ca4da6b3f1 fix(header): show community avatar alongside seedit text in header
Always render the mascot and seedit wordmark together, using the community avatar when available instead of replacing the logo.
2026-07-17 15:08:21 +07:00
Tommaso Casaburi
ced20227d4 fix(publish): use communityAddress in publish and moderation options 2026-07-17 13:21:55 +07:00
Tommaso Casaburi
e290733247 docs(ai workflow): add design guide and low-spec verification playbook 2026-07-16 15:01:25 +07:00
Tommaso Casaburi
3c691effb3 Replace directories with living default communities (#824)
* Replace directories with address-owned defaults

* Translate default community updates

* Document default community behavior

* Use comments in CID routes

* Polish default community review flow

* fix(starter-subscriptions): harden list updates

* refactor(home): derive subscription state during render

* fix(routing): harden comments link handling

* fix(electron): load tar namespace export

* fix(subscriptions): leave after provenance races

* fix(routing): autolink default TLD shorthand

* fix(starter-subscriptions): show accurate fallback warning

* fix(home): wait for default community list

* fix(onboarding): recover from storage access errors

* fix(subscriptions): surface persistence failures
2026-07-15 15:43:53 +07:00
Tommaso Casaburi
b1e3d1fccf chore(deps): upgrade bitsocial-react-hooks to 0.1.30 2026-07-15 00:24:28 +07:00
Tommaso Casaburi
d43be949f2 fix(theme): unify green accents with sprout asset color 2026-07-15 00:10:08 +07:00
Tommaso Casaburi
7e61c32c93 chore(deps): upgrade vite-plugin-node-polyfills to 0.28.0 2026-07-14 15:41:40 +07:00
Tommaso Casaburi
2ad101bfa2 chore(deps): upgrade bitsocial-react-hooks to 0.1.29 2026-07-14 14:14:19 +07:00
Tommaso Casaburi
5133add07c chore(deps): upgrade pkc-js to 0.0.71 2026-07-14 14:04:41 +07:00
Tommaso Casaburi
ded8d51371 fix(deps): resolve open Dependabot security alerts
Bump vulnerable transitive dependencies via Yarn resolutions and replace
the unpatched decompress package with tar and extract-zip for Kubo archive
extraction in the Electron build pipeline.
2026-07-14 13:33:41 +07:00
Tommaso Casaburi
f68b2bd147 chore(branding): rename author to Bitsocial Forge 2026-07-14 13:30:13 +07:00
Tommaso Casaburi
771c8d6e97 docs(agents): require evidence before bug fixes 2026-07-14 01:08:36 +07:00
Tommaso Casaburi
2858fed766 feat(branding): refresh seedit mascot (#823) 2026-07-11 15:15:01 +07:00
Tommaso Casaburi
554f85d700 merge: empty feed completion 2026-07-11 15:05:36 +07:00
Tommaso Casaburi
4217142fe4 fix(feed): show completed empty state 2026-07-11 15:05:27 +07:00
Tommaso Casaburi
8de11b8357 feat: pure p2p by default with p2p stats tab and 5chan-style advanced settings (#821)
* feat: pure p2p by default with p2p stats tab and 5chan-style advanced settings

Seedit now configures a browser libp2p node via window.defaultPkcOptions before
render (with a localStorage opt-out), like 5chan. Adds a "p2p stats" preferences
tab ported from 5chan (peers, transfer, world map), renames "plebbit options" to
"advanced" and revamps it to match 5chan (pure p2p toggle, gateway fields hidden
in pure p2p mode, RPC placeholder instead of the ? help box). Existing browser
accounts auto-upgrade to pure p2p options on load. Also fixes an aborted-lookup
race that could cache a wrong "Your IP" country flag for 60s, and reads
chainProviders from the account top-level per bitsocial-react-hooks 0.1.27.
Upgrades bitsocial-react-hooks to 0.1.27 and pkc-js to 0.0.65 to match 5chan.

* fix(settings): show first full node RPC URL instead of array in advanced settings input
2026-07-10 23:50:21 +07:00
Tommaso Casaburi
8d165d0b15 refactor(nsfw): replace per-tag NSFW filters with single directory nsfw boolean
Remove the topbar Tags dropdown and the four per-tag hide settings
(adult/gore/anti/vulgar) inherited from the retired json lists. NSFW
status now comes from a per-directory nsfw boolean in the seedit
directories metadata, controlled by a single 'Hide communities tagged
as NSFW/18+' setting (persisted state migrates automatically).
2026-07-10 16:13:03 +07:00
Tommaso Casaburi
1593dc2a9b chore(ai workflow): add Ponytail simplicity pass 2026-07-10 15:30:55 +07:00
Tommaso Casaburi
340a2d132f chore(codex agents): inherit parent model settings 2026-07-10 14:45:38 +07:00
Tommaso Casaburi
54633da92d chore: drop @typescript/native-preview in favor of typescript 7 native tsc
TypeScript 7's tsc is the Go-native compiler, so the separate tsgo
binary is redundant. Switch the type-check script to `tsc --noEmit`,
remove the devDependency, and update AGENTS.md + generated llms files.
2026-07-09 15:14:39 +07:00
Tommaso Casaburi
38d4e7fbc1 chore: upgrade typescript to 7.0.2 2026-07-09 14:46:51 +07:00
Tommaso Casaburi
13e1078fbf chore: catch up to 5chan — deps, pkc-js RPC, AI workflow, default directory subscriptions (#820)
* chore(deps): upgrade bitsocial-react-hooks to 0.1.26 and core deps

- @bitsocial/bitsocial-react-hooks 0.1.2 -> 0.1.26
- add @pkcprotocol/pkc-js 0.0.62 and @bitsocial/bso-resolver 0.0.8 (electron RPC)
- react/react-dom 19.1.2 -> 19.2.7, @types/react 19.2.16, @types/react-dom 19.2.3
- vite 8.0.5 -> 8.0.16 (dep + resolution)
- node-fetch 2 -> 3.3.2, drop @types/node-fetch (v3 ships its own types)
- @types/node 20.8.2 -> 20.19.37, fs-extra 11.2.0 -> 11.3.0
- add @electron/rebuild 3.7.2 + electron:rebuild-native script (better-sqlite3
  now ships via pkc-js)

* refactor(electron): port RPC from plebbit-js to pkc-js

- replace start-plebbit-rpc.js with start-pkc-rpc.js + start-pkc-rpc-core.js
  (5chan template, same 9138 port and auth-key handling)
- add pkc-rpc-options.js with BSO name resolvers via @bitsocial/bso-resolver
- add pkc-paths.js: data dir moves from EnvPaths('plebbit') / .plebbit to
  EnvPaths('pkc') / .pkc, with a one-time rename of the legacy plebbit data
  dir so existing users keep their communities and accounts
- main.js, start-ipfs.js, log.js now resolve data/log paths through pkc-paths
- preload.mjs exposes window.defaultPkcOptions (pkcRpcClientsOptions) and
  window.pkcRpcAuthKey via pkc-named IPC channels

* chore: rename local data dir references from .plebbit to .pkc

- electron:before:delete-data clears both .pkc and legacy .plebbit
- android icons temp dir renamed to /tmp/seedit-android-icons
- forge.config.js excludes both .pkc and .plebbit from packages
- knip.jsonc drops @plebbit/plebbit-js entries now that the electron RPC
  imports @pkcprotocol/pkc-js directly

* fix: align renderer with pkc-named account options from hooks 0.1.26

- window.defaultPlebbitOptions -> window.defaultPkcOptions (p2p. subdomain)
- account.plebbitOptions/plebbitRpcClientsOptions -> pkcOptions/
  pkcRpcClientsOptions in settings views and account import utils
- account.plebbit -> account.pkc when stripping the client instance from
  account export/editor JSON
- rpc settings data path now read from pkcRpcSettings.pkcOptions.dataPath
- account import keeps a shim that upgrades legacy plebbitOptions exports
- drop unused catch binding in start-pkc-rpc.js (oxlint)

* chore(ai): move Claude Code hooks to .claude/settings.json entry point

Adopt the reworked hook entry points: Claude Code hooks now live in
.claude/settings.json (settings-format with $CLAUDE_PROJECT_DIR paths),
the obsolete .claude/hooks.json is removed, and .cursor/hooks.json is
updated to the compact format. Hook scripts are unchanged.

* chore(ai): sync agent descriptors with 5chan rework, adapted for seedit

Port the reworked agent descriptors across .claude, .cursor, and .codex:
tools: frontmatter for read-only agents, browser-session guidance,
untrusted page-content rules, machine-path removal, and yarn doctor/knip
verification guidance.

seedit adaptations: correct the Android appId to seedit.android (the old
copies wrongly said fivechan.android), use a seedit-test-api35 AVD name,
rewrite test-apk around the direct catbox.moe FileUploaderPlugin (seedit
has no WebView upload automation or instrumentation test suite), replace
5chan board/catalog route examples with /s/<community-address> routes,
and point react-scan wiring at vite.config.js instead of the 5chan-only
src/lib/react-scan.ts.

* fix(agent hooks): port harness payload parsing and stop-gate fixes from 5chan

The shared hook implementations now parse both Cursor ({file_path}) and
Claude/Codex ({tool_input: {file_path}}) stdin shapes, normalize absolute
paths to repo-relative, emit hookSpecificOutput additionalContext on
PostToolUse so reminders reach the model, honor stop_hook_active to avoid
stop loops, skip verification on a clean tree, and exit 2 (blocking) on
verify failure. sync-git-branches keeps bitsocialnet/seedit and gains the
unmerged-PR output check.

* docs(ai): merge 5chan AGENTS.md and playbook improvements, adapted for seedit

AGENTS.md: document the harness-specific hook entry points (.claude/
settings.json, .cursor/hooks.json, .codex/hooks.json), add the
ai-workflow:check router row and command, browser-session confirmation
rules for playwright verification, the translate-skill router row, and
reworked AI Tooling Rules ordering. seedit keeps its own project
overview, changelog-based maintenance rules, and stays without
DESIGN.md/blotter/low-spec/android-usb content.

Playbooks: rewrite hooks-setup.md around the new entry points and
shared script behavior, add the committed skills/subagents index to
skills-and-tools.md, and note the canonical commit/issue-format skills
in commit-issue-format.md (without 5chan's required-scope rule, which
seedit does not use).

* chore(ai): add toolchain drift validator from 5chan

Add scripts/validate-ai-workflow.mjs and the ai-workflow:check script.
Fix the one drift it found: seedit's .claude and .cursor copies of the
profile-browsing skill disagreed on the dev-server probe URL and the
Portless note.

* chore(ai skills): port generic 5chan skill fixes and correct seedit misadaptations

Port generic improvements: stale main->master branch names in deslop and
you-might-not-need-an-effect, invalid rg --type tsx flag in
fix-merge-conflicts, the reworked verified/update-in-place readme skill,
the Chesterton's Fence rule in refactor-pass, the independent-subagent-
verification rule in review-and-merge-pr, harness-neutral wording in
inspect-elements/implement-plan/translate.

Correct seedit misadaptations left over from the original copy: test-apk
now uses appId seedit.android, a seedit AVD, and the direct catbox.moe
FileUploaderPlugin flow instead of 5chan's WebView upload automation and
instrumentation suite; profile-browsing drops 5chan board-code routes for
/s/<community-address>.

Kept seedit-flavored: commit-format (no required scope), release and
release-description (no blotter), doctor-vs-repo-standard verification
wording in implement-plan and review-and-merge-pr.

* docs(llms): regenerate llms indexes after AGENTS.md and playbook updates

* feat(directories): add directory list utils, vendored data and sync script

Port 5chan's directory machinery adapted to seedit terminology: per-code
candidate community lists, ranking/winner selection, directory codes as
subscription entries, legacy default migration transform, and a vendored
mirror of bitsocialnet/lists/seedit-directories with a sync:directories
script.

* feat(directories): resolve subscriptions and defaults from directory lists

Add hooks that fetch per-code candidate lists from the lists repo (1h
localStorage cache, in-flight dedup, vendored fallback), pick the
highest-ranked online winner with offline rotation, expand
account.subscriptions directory codes at read time, and derive the
default communities for /s/all from the union of all directory winners.
Rework the one-time auto-subscribe into the directory migration: drop
the dead legacy default communities and subscribe the 10 directory
codes under a new per-account localStorage guard.

* feat(directories): directory routes, feeds and subscribe UI

/s/<code> resolves like a community page via the directory winner while
/s/<address> keeps working; the home feed expands directory-code
subscriptions into winner addresses without flashing the empty state;
the subscribe button targets the code on directory routes with a
'subscribe to this community only' pin action; subscription lists render
directory entries as s/<code> with a (directory) marker and the resolved
community as subtitle.

* test(directories): cover directory codes, winner ranking and migration

Vitest coverage for isDirectoryCode (reserved words, dots, unknown
codes), candidate ranking and offline rotation, subscription expansion
dedupe, list normalization with defaults, and the legacy migration
transform including idempotence.

* style(directories): apply oxfmt formatting

* chore(directories): vendor real community addresses for the 10 default directories

* chore(profiling): port 5chan dev-only react-scan setup for report API and __PROFILING__ flag

Replace the @react-scan/vite-plugin-react-scan wiring with 5chan's manual
dev-only src/lib/react-scan.ts, imported in the entry file. It exposes
window.__getReactScanReport() and window.__ELEMENT_SOURCE__ (element-source
helpers the inspect-elements skill already referenced) and honors
window.__PROFILING__ to hide the toolbar during automated profiling.
Update profile-browsing SKILL.md and profiler agent copies to match.

* chore(directories): vendor .bso names for default directory communities

* fix(subscriptions): retry directory migration in-session after transient setAccount failure

* fix(electron): migrate legacy project-root .plebbit dev data dir to .pkc

* fix(directories): seed useDirectoryLists synchronously from cache/vendored data

* test(directories): guard directory codes against defaults drift

* chore(scripts): reject path-traversal file names in sync-directories

* fix(profiling): handle react-scan chunk-load failure and dedupe not-ready stubs

* style(directories): replace deprecated word-wrap with overflow-wrap

* docs(agents): align test-apk logcat reference, broaden conflict-marker scan, dedupe committed skills guidance

* chore(directories): vendor pics-posting.bso name

* fix(review): address PR feedback

* fix(review): address migration race feedback
2026-07-04 21:34:18 +07:00
Tommaso Casaburi
0b5a2de6bc Fix Codex hooks config schema 2026-06-27 13:53:09 +07:00
Tommaso Casaburi
5a993c0eb4 chore: upgrade knip to 6.17.0 2026-06-16 17:21:29 +07:00
Tommaso Casaburi
6763b55a1a chore: sharpen advisory code quality review skill 2026-06-13 16:22:31 +07:00
Tommaso Casaburi
1f37780065 chore: add advisory code quality review workflow 2026-06-13 15:13:25 +07:00
Tommaso Casaburi
d7f957bda2 fix: resolve open Dependabot security alerts
Bump vulnerable transitive dependencies via yarn resolutions and direct dependency updates.
2026-06-13 12:55:10 +07:00