Modernize fediWatch for StarIntel 0.9 #1
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/fediWatch!1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "agent/modernize-starintel-0.9"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What changed
user,social-media-post, andrelationenvelopesrepostedrelations instead of falsely attributing original content to the boosting accountAGPL-3.0-onlywith the complete canonical AGPLv3 textDependency modernization
The branch pins the companion Nim 2 Mastodon client modernization from
lost-rob0t/fedi. That rewrite fixes malformed endpoint URLs, premature shared-client closure, unsafe rate-limit parsing, dropped headers, unencoded account lookups, numeric cursor handling, non-JSON errors, and the obsolete query-macro dependency stack.RabbitMQ output uses a small Nim/C bridge over maintained
rabbitmq-cinstead of the broken third-party Nim AMQP package. It supportsamqp://and verifiedamqps://connections across rabbitmq-c 0.11 and newer.Validation
GitHub Actions validates:
Review found two merge-blocking correctness issues. CI is green, but this head should not merge until pagination and federated post identity are fixed.
@ -0,0 +124,4 @@proc postId*(status: JsonNode, instanceHost: string): string =stableId("social-media-post",normalizeHost(instanceHost) & ":" & status{"id"}.getStr(Blocker for federated deduplication: Mastodon
status.idis local to the instance serving the API, so hashinginstanceHost:idgives different StarIntel_ids for the same federated post observed through different instances. The canonical ActivityPuburishould be the primary identity key (then canonicalurl, withinstanceHost:idonly as a last-resort fallback). The same identity rule should be used for reply/quote/reblog relation targets so they resolve to the same post document across observers. Please add a cross-instance test proving the sameuriyields the same_id.@ -0,0 +72,4 @@remote = watcher.target.remote,onlyMedia = watcher.target.onlyMedia,limit = watcher.target.limit,sinceId = watcher.sinceIdBlocker: this can silently drop statuses under normal instance traffic. Both pinned
fedi.getTimelineandgetStatusessupportmaxId, but this fetches only one page (max 40) newer thansinceId, thenpoll()advances the cursor totimeline[0].id. If >40 statuses arrive between polls, the older unseen statuses are never fetched and become permanently skipped. Please paginate all pages newer than the committedsinceId(usingmaxIdwhile retaining the original lower bound), then advance the cursor only after the full paginated result has been emitted successfully. Add a test with >1 page of new statuses.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.