Commits in Cantara/source-code-portal
Up to date
refactor: one portal origin, one JSON body reader, one label typeoranheim62 additions and 74 deletions in 9 files152bd33
fix(webhook,llms,packages): bounded bodies held, no shared cache for Host-derived files, bounded registry hostsoranheim73 additions and 6 deletions in 6 filesd5d005b
fix(auth,assistant): email_verified given as a string; the keep-alive ping ends before the handler returnsoranheim33 additions and 4 deletions in 3 filesc8acdd3
test(untrusted): the format characters as runesoranheim1 addition and 1 deletion in 1 fileb013a4a
fix(untrusted,tools,httpapi): every format character is stripped; schemas Check would skip are refused; one origin computationoranheim86 additions and 31 deletions in 7 filesa359518
fix(cluster,filestore,jsonstream): no lead on an unread state map; a transient read error clears; a surrogate keeps its neighbouroranheim74 additions and 26 deletions in 4 files953c5bb
fix(github,lru): the conditional cache is keyed by credential and bounded by bytes; the LRU counts every valueoranheim35 additions and 17 deletions in 5 files73e487b
refactor(web): one paging hook for the commits, pull requests and issues lists; one repository queue paneloranheim133 additions and 178 deletions in 8 files70d3f70
refactor(packages,badges): no release is an explicit error, not nil, niloranheim31 additions and 18 deletions in 9 files78b61ed
refactor(web): shared product and repository filter fields, one tile titleoranheim62 additions and 57 deletions in 5 files601c417
refactor(lru): one typed LRU cache for the GitHub transport, the package registries and the image proxyoranheim150 additions and 87 deletions in 8 files5e7c7d3
refactor(present): split the presentation page into its screen, status, stream and controlsoranheim457 additions and 435 deletions in 6 files248f284
refactor(api): one scope package for the commits, pull requests and issues listingsoranheim206 additions and 270 deletions in 8 filesf64b9b6
perf(web): refresh once per 15 s, keep /me, no prefetch on dense links, read page 2 only when nearoranheim130 additions and 19 deletions in 13 files89baa6b
tag v2.2.4docs(changelog): 2.2.4oranheim26 additions and 0 deletions in 1 filedfb70ec
feat(present): the pull requests and the issues drawn as the latest commits are, in the side columnoranheim201 additions and 30 deletions in 5 files3c4dbbf
feat(dashboard): the pull requests and the issues sections list the newest first, on the dashboard and /presentoranheim52 additions and 33 deletions in 9 filese2ca9b5
feat(present): the side column in sections: latest commits, pull requests and issues, each hiding; a compact status striporanheim318 additions and 131 deletions in 20 files69d6c75
feat(dashboard): the pull requests and the issues load more at the end of their scroll, as the latest commits dooranheim217 additions and 8 deletions in 6 files2e51d40
feat(dashboard): every side panel section hides by its own panel button; the latest commits first, then pull requests, then issuesoranheim102 additions and 106 deletions in 13 filesb5ceecd
feat(dashboard): the side panel in sections: pull requests, issues and latest commits in thirds, each foldingoranheim388 additions and 129 deletions in 26 files4119629
ci: no run for a change of only documents; the documents a test reads still run itoranheim39 additions and 1 deletion in 3 files474aeb9
docs: an explicit ask to push directly pushes main itself, an exception to the one-PR ruleoranheim3 additions and 2 deletions in 2 fileseabb8a4
docs: testing WebMCP in Chrome in the operator guide (2.6) and the operator plugin (1.9.1)oranheim26 additions and 1 deletion in 3 files2f04b3f
docs(guide): try WebMCP in Chrome: the flag, the inspector, a Gemini key, a tool by hand and a promptoranheim121 additions and 8 deletions in 8 files7157f8a
docs(design): the terms of the pages built from layouts, the words instructions useoranheim32 additions and 0 deletions in 1 file06c9c3d
test(features): the switches over MCP: the tools listed, the search's kinds, a switched-off tool refusedoranheim41 additions and 4 deletions in 2 filesbd011c6
Merge #17: switch off the open pull requests or issuesMerge of 2 parents.oranheim743 additions and 142 deletions in 55 files77e0dde
feat: switch off the open pull requests or issues (features.pulls, features.issues)oranheim692 additions and 131 deletions in 55 files2642c66
docs(guide): list the App's permissions and events as bulletsoranheim51 additions and 11 deletions in 1 file3573bad
Merge #16: e2e deterministic by constructionMerge of 2 parents.oranheim88 additions and 41 deletions in 10 files39d0a22
Merge main into e2e-stableMerge of 2 parents.oranheim42 additions and 11 deletions in 6 files94c9cee
Merge #15: the public cannot tell a portal with private repositories from one withoutMerge of 2 parents.oranheim268 additions and 25 deletions in 14 files8ed025f
Merge main into security-twin: the CI runner's slack on the time budgetsMerge of 2 parents.oranheim42 additions and 11 deletions in 6 filesc52fdf7
Merge #14: faster, event-driven Go testsMerge of 2 parents.oranheim102 additions and 48 deletions in 14 files5fc1bc7
Merge #13: fewer webhook events, the security model, e2e without shared-state flakesMerge of 2 parents.oranheim128 additions and 79 deletions in 26 filesd7f0883
test: the load and index size budgets get three times their time on a CI runner, one package at a time: the design's budgets are a developer machine'soranheim42 additions and 11 deletions in 6 files7b2acad
test(e2e): deterministic by construction: every navigation waits for the page to hydrate, a fresh server every run, no networkidle or sleeps, reduced motion, the time budget alone after everything (P…oranheim88 additions and 41 deletions in 10 filesd981207
test(e2e): wait for the page to answer clicks (html[data-hydrated]) instead of pressing againoranheim25 additions and 14 deletions in 4 files3fda2cc
fix(access)!: the public cannot tell a portal with private repositories from one without: a twin portal compared word for word over every route, guessed address, tool and MCP; a private push unseen;…oranheim243 additions and 11 deletions in 10 files80318a4
test: tests wait on what happened, not on time: the web UI supervisor's steps told to its test with short intervals; the load and index size checks run without the race detector (P-75)oranheim71 additions and 48 deletions in 12 files36c05b6
fix: subscribe only to the webhook events that change what the portal shows: not Issue comment, Check suite or Status, which fire on every comment and CI update (P-73)oranheim43 additions and 38 deletions in 17 files91fe696
test(e2e): no spec reads what another writes: the tests that change every page (layouts, announcements, a push) run in the project writes after the readers, one at a time; the setup waits for the pul…oranheim68 additions and 35 deletions in 6 files0c4f60d
docs: commit to main locally only and open one PR per completed feature; CI runs once, on the PRoranheim5 additions and 3 deletions in 2 files3a0d0d8
docs(security): the App's read-only permissions per feature, what its key can read, read-only towards GitHub and the webhook floor as guaranteesoranheim12 additions and 3 deletions in 2 files32d8693
ci: no service containers: the Hazelcast service is gone, the cluster tests run on the in-memory backend and the real Hazelcast ones only locally (P-72)oranheim4 additions and 13 deletions in 4 filesf0c0e50
feat: the portal says what GitHub must grant each feature and warns when it does not: internal/prereq (read permissions, webhook events), the App's grants from its installations, a token's refusals f…oranheim1,193 additions and 18 deletions in 33 filesddc2c69
fix(sync): a job whose events anyone can cause settles: an issue comment, a pull request or a review re-reads a repository at most once a minute, so nobody outside can spend the App's rate limit (P-7…oranheim52 additions and 10 deletions in 6 filesa1e634f
feat: open issues for agents and search: the tool open_issues, the search kind issue (in:issue), an Issues section in a repository's Markdown and /issues in the sitemap; the App's Issues permission a…oranheim216 additions and 49 deletions in 28 files8a182fa
feat: open issues per repository and where each stands (needs triage, unassigned, assigned) from GitHub's conditional issues listing, pull requests skipped; /api/v1/issues, /issues in the header, the…oranheim2,803 additions and 191 deletions in 45 files7990531
fix(web): the commit navigator's keys act on the page itself while its rows are drawn deferred, so no key is lost while they catch uporanheim13 additions and 13 deletions in 1 file5159bb6
perf(web): the commit navigator renders a page of rows deferred and skips laying out the rows off screen, so 200 rows never make a long task; keys and a move across a page's edge wait for the rows to…oranheim19 additions and 5 deletions in 1 file22a5f05
feat: open pull requests for agents, search and badges: the tool open_pull_requests, the search kind pull (in:pull), the pulls badges for repositories and groups, a Pull requests section in a reposit…oranheim267 additions and 60 deletions in 42 files2d402d8
feat(web): open pull requests in the pages: /pulls in the header (whose turn first, the states as filters, works without JavaScript), the telemetry signal, the pulls element on the dashboard and /pre…oranheim1,087 additions and 76 deletions in 49 files5f616b1
feat: open pull requests per repository and whose turn each is, from a conditional REST listing and one GraphQL query of what changed; issues counted apart, the findings reviews and updates, /api/v1/…oranheim2,536 additions and 155 deletions in 37 files3fd53c0
docs(design): pull requests on the dashboard and /present in the built-in layouts, the cost measured on Cantara, queries sized to the listing, pending checks backed off (P-68)oranheim20 additions and 10 deletions in 3 filesa252bd2
docs(design): open pull requests, whose turn it is: a conditional REST listing then one GraphQL query per changed repository, /pulls and where it shows (PR1 to PR3, P-68)oranheim135 additions and 3 deletions in 4 filesf2fcd2d
feat: commit diff stats (+a −d and a five-block bar) in every commit list, from GitHub's GraphQL API 100 commits a query, kept by SHA, the last 90 days only (D1, P-67)oranheim543 additions and 17 deletions in 27 files8df3c26
feat(web): the group table's release is the version alone with where it is from in its own column (GitHub, Maven, npm, ...); issues and findings are centredoranheim28 additions and 16 deletions in 6 files50dc99e
feat(web): the group page's repositories are one table as the dashboard's products: a panel, aligned one-line rows, numbers right, every column sortable, health as ring and level, the status only whe…oranheim249 additions and 320 deletions in 9 filesc15c88e
feat(web): announcements are the dashboard's first row below the header and /present's below its strip; /present follows the reader's theme, a wall alone dark unless chosen (P-66)oranheim52 additions and 27 deletions in 18 files06947a4
feat(web): announcements sit above the fleet map, right below the fleet's numbers, on the dashboard and /presentoranheim14 additions and 14 deletions in 11 files1904e48
feat: announcements below the fleet on the dashboard and /present, from scp.yaml and the admins (N1, N2, P-65)oranheim2,398 additions and 212 deletions in 53 files7a274ab
feat(web): the presentation page's commit subjects link to the commit on GitHub, as the dashboard's dooranheim13 additions and 2 deletions in 2 filesd10a9e2
feat(web): a Present icon in the header beside the theme menu; the presentation page's column header on one line; the guide-page skill and the Guide follow the rules API, the signals, the latest comm…oranheim56 additions and 18 deletions in 11 files9057340
feat(web): the presentation page splits by its profile, a window on half a monitor is a desk, the good products take richer tiles where there is room, and the shared screens are named (P-64)oranheim181 additions and 50 deletions in 11 files38ce8c0
feat(web): presentation profiles: Handheld portrait, Handheld landscape, Desk and Wall, each with its own commit column, Desk at 60% (K3, P-64)oranheim274 additions and 36 deletions in 12 files36bf2c3
feat(web): the latest commits' label opens a dialog of the three kinds of work to show, remembered apart from the work that counts (P-63)oranheim369 additions and 57 deletions in 13 files37ea7a9
feat(web): the presentation page's commit column scrolls, reads older commits at its end and goes back to the newest after a minuteoranheim80 additions and 12 deletions in 3 filesf21ed74
feat(web): the presentation page's freshness says the data's age alone: now, 3m agooranheim3 additions and 2 deletions in 2 filesba3894d
feat(web): a finding's label is part of its link, and the latest commits read the next page at their endoranheim152 additions and 34 deletions in 10 files73e7a17
feat(web): the fleet's products as bare outlines, the products before the sync, a cloud for the sync and the commit kinds kept together (P-62)oranheim97 additions and 62 deletions in 11 files197e571
feat: the pages say what the server does, from its rules; signals count commits, findings lead to their fix (P-62)oranheim1,721 additions and 621 deletions in 48 files6d5f72d
feat(web): one list of the fleet's signals for the dashboard and the presentation page (people, AI, automation, active, findings, in sync), the SCP brand linking to the dashboard, the tap bar at the…oranheim224 additions and 153 deletions in 16 files7f079cd
feat(web): the presentation page's wide tiles mark their level as the fleet map does, with the count, the words in its hintoranheim18 additions and 5 deletions in 2 files878e86b
feat(web): the presentation page's wide tiles show each finding as its icon and repository, the reason in the icon's hintoranheim34 additions and 14 deletions in 3 filesc290396
fix(web): the presentation page places its tiles as the dense grid does and fills the room a narrowed tile left with good productsoranheim93 additions and 56 deletions in 3 files11875f8
feat(web): the presentation page folds by importance (good first, then the mildest to watch; attention never) and draws the fleet as one dense striporanheim174 additions and 60 deletions in 7 filesb5f47b0
feat(web): the presentation page's commits show the author's avatar where the column has room, and who beside when, the subject on a line of its ownoranheim37 additions and 26 deletions in 4 files58838ce
feat(web): the presentation page's commit column as wide as its edge is dragged, the signals at its left kept by importance as they narrow, a double tap back to the usual width (P-60)oranheim245 additions and 21 deletions in 13 files54dfd69
feat(web): the presentation page on a wall: tap bar, wake lock, web app manifest, reloads, burn-in shift, dark by default, design mode (K2)oranheim377 additions and 47 deletions in 13 files6dac40c
docs: the presentation page in the Guide (with its picture), the operator guide, the API guide and the operators' plugin; K2 doneoranheim105 additions and 25 deletions in 14 filese43f115
feat(web): /present, the fleet on one screen: health map, product tiles that fold, the commit column and the data's freshness (K1)oranheim779 additions and 53 deletions in 22 files12751af
docs(work): presentation mode for a tablet or a wall (K1, K2), P-59oranheim115 additions and 0 deletions in 3 files5c2ea76
tag v2.2.3docs(changelog): 2.2.3oranheim19 additions and 0 deletions in 1 file8aff419
docs: search in the Guide, the API and operator guides, the security model and the operators' plugin; Q3 doneoranheim111 additions and 28 deletions in 11 filesd445fee
feat(web): the search page and the header's search box with suggestions, OpenSearch and the SearchAction (Q3)oranheim715 additions and 4 deletions in 18 files5a175cd
test(e2e): the sign-in test opens the account menu again while the page hydratesoranheim12 additions and 2 deletions in 1 file8f476b0
feat(llms): /opensearch.xml, and robots.txt keeps crawlers off the search pagesoranheim26 additions and 4 deletions in 4 files2b2c8ef
feat(search): GET /api/v1/search and /search/suggest, the search tool for the assistant, MCP and WebMCP, status and metrics (Q2)oranheim932 additions and 97 deletions in 19 files5ffcbca
feat(search): the search index in memory, a segment per repository reused by its content digest (Q1)oranheim2,431 additions and 19 deletions in 17 files4b47dcc
feat(snapshot): a content digest per repository, unchanged by a check that found nothing neworanheim77 additions and 19 deletions in 5 filesf7c9be8
docs(design): search over what the portal holds, an in-memory index of a segment per repository (Q1 to Q3)oranheim142 additions and 4 deletions in 5 filesa9c322d
docs(plan): embedding (E1 to E4) dequeued until the owner returns to it; search is nextoranheim9 additions and 8 deletions in 3 filescf34f9c
tag v2.2.2docs(changelog): 2.2.2oranheim17 additions and 0 deletions in 1 filebda0290
fix(httpapi): no Permissions-Policy entry for tools, whose default is self already and which Chrome warns aboutoranheim8 additions and 6 deletions in 5 files57d0317
feat(web): WebMCP, the portal's tools and the page's own for a browser's agent, and the Guide's agents section (W3)oranheim511 additions and 12 deletions in 12 filesd88e843
docs(plan): W2 done, W3 in progressoranheim2 additions and 2 deletions in 1 file6fb0ed2
feat(mcp): the tool catalogue at /mcp over the Model Context Protocol, for tokens and the public view (W2)oranheim374 additions and 7 deletions in 16 filesb4d4287
docs(plan): W1 done, W2 in progressoranheim2 additions and 2 deletions in 1 filec79fa94