Repository navigation
Releases: sakuga-software/fruitback
Releases · sakuga-software/fruitback
Release list
v0.5.0
What's Changed
- ci: a release published on GitHub starts the releases, not a pushed tag by @sakuga-agent[bot] in #622
- fix(worker): a batch forgets its parent only when Linear says the parent is gone (FRU-195) by @sakuga-agent[bot] in #623
- docs: frame an AI agent that reads the notes, replies and sets a status (FRU-110) by @sakuga-agent[bot] in #624
- feat(worker): an agent key of a workspace, its sites and its rights (FRU-461) by @sakuga-agent[bot] in #626
- feat(worker): the remote MCP server /mcp and its three read tools (FRU-463) by @sakuga-agent[bot] in #627
- feat(worker): an agent replies and sets a status through /mcp, and each write is logged (FRU-464) by @sakuga-agent[bot] in #628
- feat(widget): a reply of an agent says « Agent » beside the name of its key (FRU-465) by @sakuga-agent[bot] in #630
- docs: connect an AI agent, and where its notes go (FRU-466) by @sakuga-agent[bot] in #631
- feat(widget): the reporter moves the dock from the settings (FRU-472) by @sakuga-agent[bot] in #632
- fix(widget): the frame and the composer follow a fixed element at a scroll (FRU-457) by @sakuga-agent[bot] in #634
- ci: bump the github-actions group with 2 updates by @dependabot[bot] in #625
- feat: a team of Linear, then one of its projects with its status, in two lists (FRU-458) by @sakuga-agent[bot] in #638
- feat(worker): keep the last use of an agent key, to the minute (FRU-462) by @sakuga-agent[bot] in #633
- feat(console): the screen « Agents » of a workspace: make, list and revoke agent keys (FRU-462) by @sakuga-agent[bot] in #635
- test(e2e): start a spec's Cloud worker before the test asks for it by @sakuga-agent[bot] in #644
- feat(widget): « All pages » in the list, for a host that reads the site (FRU-470) by @sakuga-agent[bot] in #639
- feat: each destination shows the mark of its source, and Linear's colour (FRU-459) by @sakuga-agent[bot] in #643
- feat(console): the page of a site says the extension is connected (FRU-455) by @sakuga-agent[bot] in #651
- ci(e2e): cut the three e2e parts by duration, not by count of tests by @sakuga-agent[bot] in #650
- fix(widget): the composer follows its element by the same move, and keeps its side (FRU-457) by @sakuga-agent[bot] in #647
- feat: choose who sees the notes and where they go when turning a site on in the popup (FRU-453) by @sakuga-agent[bot] in #636
- feat(extension): the widget it mounts reads « All pages » with the session (FRU-470) by @sakuga-agent[bot] in #645
- feat(widget): the dock, the settings and the thread fade in (FRU-471) by @sakuga-agent[bot] in #653
- feat(console): the rail says the extension is connected on two lines that do not wrap (FRU-456) by @sakuga-agent[bot] in #652
- fix(extension): finish the add of a site when the permission prompt closed the popup (FRU-454) by @sakuga-agent[bot] in #641
- fix(extension): the page gets an excerpt of 64 characters at most from « All pages » (FRU-470) by @sakuga-agent[bot] in #654
- fix(worker): name the locale of the excerpt and of the sorts, so CI runs no worker file twice (FRU-479) by @sakuga-agent[bot] in #655
- feat: a site starts an agent when a verified note arrives, through the queue of the REST connector (FRU-468) by @sakuga-agent[bot] in #646
- fix(extension): clear the intent that was settled, not one written since (FRU-454) by @sakuga-agent[bot] in #658
- test: run the last published npm packages and extension against this worker (FRU-460) by @sakuga-agent[bot] in #637
- feat: the button of the widget opens the side panel of the extension (FRU-469) by @sakuga-agent[bot] in #648
- test(e2e): serve the console built, as its image does, to the specs (FRU-473) by @sakuga-agent[bot] in #657
- test: check the archive of the release and the installed npm versions (FRU-460) by @sakuga-agent[bot] in #660
- docs(design): the board of several notes sent together, one issue each or one issue (FRU-474) by @sakuga-agent[bot] in #663
- docs: the path from the install to the first note, measured, and its tickets (FRU-481) by @sakuga-agent[bot] in #659
- feat: the author edits a note that is still new, from its thread (FRU-475) by @sakuga-agent[bot] in #661
- test(e2e): cut the three parts again from four runs with the console and the playground built (FRU-488) by @sakuga-agent[bot] in #667
- feat(worker): OAuth 2.1 for /mcp, so a connector of claude.ai connects with a person's consent (FRU-467) by @sakuga-agent[bot] in #662
- feat(extension): a Safari build, with the in-page list where there is no side panel (FRU-380) by @sakuga-agent[bot] in #666
- feat(extension): the welcome page signs in itself, and the popup offers the sign-in on any page (FRU-482) by @sakuga-agent[bot] in #668
- test(e2e): serve the playground as a development build to the specs (FRU-488) by @sakuga-agent[bot] in #665
- fix(extension): no « Keep my rules in the account of this browser » on Safari (FRU-380) by @sakuga-agent[bot] in #670
- feat(extension): the welcome page turns on a site of the account and opens it (FRU-483) by @sakuga-agent[bot] in #669
- feat(extension): the welcome page starts with the sign-in, and pinning Fruitback is a tip (FRU-484) by @sakuga-agent[bot] in #671
- feat(extension): turning a site on from the welcome page opens the choice of an element, once (FRU-485) by @sakuga-agent[bot] in #674
- fix(extension): keep the first pick of an origin only once its widget answered (FRU-485) by @sakuga-agent[bot] in #675
- feat(console): an icon for each rail entry, and a back arrow on « My workspaces » (FRU-476, FRU-477) by @sakuga-agent[bot] in #677
- feat(console): one list of sites in a Linear source panel, each row linking to its statuses (FRU-478) by @sakuga-agent[bot] in #678
- feat(console): a guide of the extension on the setup page, captured by the first-note spec (FRU-486) by @sakuga-agent[bot] in #679
- ci(extension): take the captures of the guide again at each release of the extension (FRU-486) by @sakuga-agent[bot] in #680
- test(e2e): measure the Arabic popover against an unpressed button, at 5 px (FRU-489) by @sakuga-agent[bot] in #684
- test(e2e): change React's text nodes in place, and give the captures of the guide a stable size (FRU-486) by @sakuga-agent[bot] in #682
- test(worker): the consent of a person reads the sites of a workspace in either order of a tie (FRU-480) by @sakuga-agent[bot] in #686
- test(e2e): the side panel in two spec files, so its halves run on two workers (FRU-480) by @sakuga-agent[bot] in #687
- fix(widget): keep the frame and the composer on a button that shrank while pressed (FRU-489) by @sakuga-agent[bot] in #689
- test(e2e): give each --repeat-each run a page of its own through caseOf (FRU-490) by @sakuga-agent[bot] in #690
- feat(extension): the console of the Cloud connects the extension of its browser in place (FRU-487) by @sakuga-agent[bot] in #676
- ci: the E2E suite in six parts (FRU-480) by @sakuga-agent[bot] in #688
- test(worker): cheaper resets of the test databases, on PGlite and on PostgreSQL (FRU-480) by @sakuga-agent[bot] in #683
- ci(extension): a run of a tag started again updates the pull request of...
v0.4.0
What's Changed
- feat(console): the rail is as high as the window, and a screen takes the whole width of its column (FRU-402, FRU-398) by @sakuga-agent[bot] in #519
- fix(console): a head of a table is one line (FRU-401) by @sakuga-agent[bot] in #520
- fix(console): the menu of a row opens toward the left, under its button (FRU-407) by @sakuga-agent[bot] in #521
- fix(console): the title of every page is at one place (FRU-405) by @sakuga-agent[bot] in #523
- docs: each published package has a README on npm (FRU-388) by @sakuga-agent[bot] in #526
- feat(console): open the panel of a connector as an accordion under its row (FRU-403) by @sakuga-agent[bot] in #525
- docs: the landing links to the install of the extension (FRU-418) by @sakuga-agent[bot] in #528
- feat(console): the foot of the rail leads to the extension (FRU-406) by @sakuga-agent[bot] in #524
- docs: the guides take the layout of the board « Fruitback Docs » (FRU-417) by @sakuga-agent[bot] in #531
- fix(console): drop the legend of the statuses above the Sites table (FRU-400) by @sakuga-agent[bot] in #518
- feat(console): the rail and the landing lead Chrome and Edge to the Chrome Web Store (FRU-406, FRU-418) by @sakuga-agent[bot] in #535
- fix(console): the chosen value of a list takes the type of its button, so « Email » and « Role » share a baseline (FRU-412) by @sakuga-agent[bot] in #532
- feat(console): a provider that does not link names itself, the address of the account, and what to do (FRU-416) by @sakuga-agent[bot] in #537
- feat(worker): count the notes of each status in GET …/statuses (FRU-386) by @sakuga-agent[bot] in #540
- feat(console): the name of the workspace in the rail opens its settings, which rename it (FRU-414) by @sakuga-agent[bot] in #534
- feat(worker): a workspace names its connectors (FRU-404) by @sakuga-agent[bot] in #527
- fix(extension): one copy of Fruitback drives a page, and the popup asks to remove another one (FRU-397) by @sakuga-agent[bot] in #533
- feat(worker): the way back of a link that failed names its provider (FRU-416) by @sakuga-agent[bot] in #536
- feat(console): show the sites as a grid with icons, a search and pages (FRU-408) by @sakuga-agent[bot] in #522
- fix(widget): a note refused for want of a member's session says to sign in, not to try again (FRU-394) by @sakuga-agent[bot] in #529
- feat(console): /connect, the invitation and the setup lead Chrome and Edge to the Chrome Web Store (FRU-409) by @sakuga-agent[bot] in #543
- fix(extension): the validator of AMO finds no eval and no innerHTML in the build (FRU-389) by @sakuga-agent[bot] in #542
- feat(console): /connect leads to the console once a browser of the extension connects (FRU-410) by @sakuga-agent[bot] in #545
- feat(console): set where the notes of a site go from the Sites screen (FRU-399) by @sakuga-agent[bot] in #546
- fix(extension): a rule refuses a pairing link as its worker, and the popup says when its worker is not there (FRU-395) by @sakuga-agent[bot] in #539
- feat(console): the drop of the rail slides to the entry on screen (FRU-413) by @sakuga-agent[bot] in #554
- fix(widget): the cross of a bubble stays at the top on the right, and its age, source and empty replies are hidden (FRU-419) by @sakuga-agent[bot] in #547
- feat(widget): a screenshot pasted in the composer joins the note as an attachment (FRU-424) by @sakuga-agent[bot] in #555
- feat(console): show the notes of each status, and ask where they go at once (FRU-386) by @sakuga-agent[bot] in #541
- feat(extension): the head of a note hides the selector of the element unless « Show CSS selectors » is on (FRU-411) by @sakuga-agent[bot] in #544
- feat(console): name a connector, and show its name where it appears (FRU-404) by @sakuga-agent[bot] in #530
- test: a bench of the extension, with the click on the icon and a fake Linear that keeps the files (FRU-426) by @sakuga-agent[bot] in #538
- ci: accept the upgrade page of its own in the refusal of a worker with no database (FRU-427) by @sakuga-agent[bot] in #548
- feat(extension): a capture refused for want of a gesture says to click the icon (FRU-423) by @sakuga-agent[bot] in #556
- test(e2e): give the tests of an invited reviewer three times the time (FRU-430) by @sakuga-agent[bot] in #557
- feat(widget): the bubble of a note moves by a handle, with a dashed line to its pin (FRU-420) by @sakuga-agent[bot] in #550
- docs: split the self-hosting guide into eight short pages, and keep its addresses (FRU-427) by @sakuga-agent[bot] in #549
- feat(extension): « Capture with Fruitback » in the context menu grants the capture (FRU-423) by @sakuga-agent[bot] in #559
- docs: split the install guide into four short pages, and keep its addresses (FRU-427) by @sakuga-agent[bot] in #551
- docs: split the privacy guide into three pages, and keep its addresses (FRU-427) by @sakuga-agent[bot] in #552
- feat(extension): the options page can allow captures on every site (FRU-425) by @sakuga-agent[bot] in #560
- docs: split the architecture page, and link the decisions on GitHub (FRU-427) by @sakuga-agent[bot] in #553
- fix(widget): the menu « Attach » floats under its button, and the composer keeps its size (FRU-431) by @sakuga-agent[bot] in #562
- test(console): wait for the invitation to reach the stub before counting it (FRU-442) by @sakuga-agent[bot] in #563
- docs: the guides link SECURITY.md and the sources on GitHub, not by a path the site does not publish (FRU-429) by @sakuga-agent[bot] in #564
- fix(deps): clear the zod and happy-dom advisories of the production audit by @sakuga-agent[bot] in #567
- ci(dependabot): group the npm security updates in one pull request by @sakuga-agent[bot] in #566
- test: the bench expects the refusal of FRU-423, which says to click the icon (FRU-426) by @sakuga-agent[bot] in #569
- refactor(shared): a note is no longer a seed in the contract, and the old names stay as deprecated aliases (FRU-378) by @sakuga-agent[bot] in #565
- fix(console): the members screen has no legend of the roles under its table (FRU-437) by @sakuga-agent[bot] in #570
- feat: the guides scroll to an anchor smoothly, and fade from page to page (FRU-440) by @sakuga-agent[bot] in #571
- feat(console): the notes table draws the mark of a source before its name (FRU-435) by @sakuga-agent[bot] in #572
- feat(widget): a pin shows a preview of its note on hover and keyboard focus (FRU-422) by @sakuga-agent[bot] in #573
- chore(deps): update the minor and patch dependencies by @sakuga-agent[bot] in #574
- feat(widget): the bubble of a note opens around its element, never on it, with an arrow to its pin (FRU-421) by @sakuga-agent[bot] in #575
- chore(deps): move to vitest 5 and react-grab 0.2 by @sakuga-agent[bot] in #576
- style: format with oxfmt 0.73 by @sakuga-agent[bot] in #577
- feat(extension): the popup hides or shows the widget on this page (FRU-444) by @sakuga-agent[bot] in #583
- feat(console): a site has a page of its own, and the grid unfolds nothing under a card (FRU-433) by @sakuga-agent[bot] in #585
- feat(widget): init takes position, the corner of the dock, and the handle mov...
v0.3.0
What's Changed
- fix(console): a refused /auth/providers takes no path, and the caller gets the refusal (FRU-205) by @sakuga-agent[bot] in #217
- fix(worker): the window of an invitation is of its workspace, and past it the invitation is kept (FRU-209) by @sakuga-agent[bot] in #218
- test: four guards of the cookie sign-in that no test held (FRU-207) by @sakuga-agent[bot] in #221
- fix(worker): /console/auth/get-session is not served, it answered the token of the session (FRU-206) by @sakuga-agent[bot] in #219
- fix(worker): a call that renews the session of the console renews its cookie (FRU-208) by @sakuga-agent[bot] in #223
- style(console): wide buttons and fields take the shape and the border of the boards (FRU-168) by @sakuga-agent[bot] in #227
- feat(widget): keep notes for later and send them together (FRU-124) by @sakuga-agent[bot] in #220
- refactor: the sign-in of before and the accounts file go (FRU-150) by @sakuga-agent[bot] in #222
- fix(worker): a page of another site starts no sign-in with a provider (FRU-211) by @sakuga-agent[bot] in #231
- fix(worker): an invitation does not outlive the right of whoever made it (FRU-209) by @sakuga-agent[bot] in #225
- feat(worker): a workspace proves a domain by a DNS record, to cover the previews of a site (FRU-103) by @sakuga-agent[bot] in #224
- feat: the extension attaches a picture of the element to a note, kept for the members (FRU-44) by @sakuga-agent[bot] in #209
- feat(console): the Sites screen proves a domain, and names the site whose previews it covers (FRU-103) by @sakuga-agent[bot] in #226
- feat(worker): a worker with no reviewer writes the pairing code of the one its operator names (FRU-108) by @sakuga-agent[bot] in #229
- test(extension): the bridge keeps the address of a picture on https and http loopback (FRU-44) by @sakuga-agent[bot] in #237
- fix(console): a tab sends nothing for another account than the one it was drawn for (FRU-210) by @sakuga-agent[bot] in #230
- fix(worker): a change on a route of better-auth carries the Origin of the console (FRU-212) by @sakuga-agent[bot] in #233
- fix(worker): an account and a workspace send a bounded number of invitations, under a fixed subject (FRU-209) by @sakuga-agent[bot] in #228
- feat(console): the panel of a source that a person opens takes focus, and Escape gives it back (FRU-197) by @sakuga-agent[bot] in #238
- test(worker): the routes of the console answer the console and no other origin (FRU-214) by @sakuga-agent[bot] in #239
- fix(worker): one call at a time changes a workspace, and the smaller rules of the invitations (FRU-209) by @sakuga-agent[bot] in #234
- test: the console reads mailed: false, and the window holds for calls at the same moment (FRU-209) by @sakuga-agent[bot] in #243
- test(worker): the Scaleway mailer, and each thing a person typed is text in a message (FRU-215) by @sakuga-agent[bot] in #240
- test: rules of the configuration, the language of an account, and three readings of the console (FRU-216) by @sakuga-agent[bot] in #241
- test(worker): a guest of the workspace sends and reads the picture of a note (FRU-213) by @sakuga-agent[bot] in #244
- feat(extension): a team wildcard serves the previews that the worker of the session lists (FRU-103) by @sakuga-agent[bot] in #232
- fix(extension): an answer of a worker is kept only for the session that asked (FRU-103) by @sakuga-agent[bot] in #245
- fix: a worker with accounts and no sign-in says so, and four small things of the configuration (FRU-217) by @sakuga-agent[bot] in #242
- feat(worker): the owner and an admin rename a workspace (FRU-236) by @sakuga-agent[bot] in #250
- feat: the tokens of the « simpler flow » mock-up in the widget, the extension, the e-mails and /pair (FRU-233) by @sakuga-agent[bot] in #252
- docs(security): say which routes the workspace lock covers (FRU-236) by @sakuga-agent[bot] in #253
- feat(widget): the pins, their frame and the dock at the measures of the mock-up (FRU-252) by @sakuga-agent[bot] in #256
- feat(extension): a reviewer can keep the rules of sites in the account of the browser (FRU-72) by @sakuga-agent[bot] in #214
- feat(worker): the notes in PostgreSQL, a store of the database with forget (FRU-218) by @sakuga-agent[bot] in #247
- feat(widget): the bubble of a note at the measures of the mock-up (FRU-256) by @sakuga-agent[bot] in #261
- feat(console): the tokens of the simpler-flow mockup and the kit of its components (FRU-232) by @sakuga-agent[bot] in #254
- fix(extension): the echo of its own write to the browser account does not undo a later change made here (FRU-72) by @sakuga-agent[bot] in #251
- feat(console): the logo, the frame of a page outside a workspace and a divider in the kit (FRU-232) by @sakuga-agent[bot] in #255
- feat(worker): the Kv of a worker with a database is in PostgreSQL, shared by its replicas (FRU-67) by @sakuga-agent[bot] in #246
- feat(console): a menu in the kit, for the workspace of the rail and the row of a site (FRU-232) by @sakuga-agent[bot] in #257
- feat(widget): the banner of a capture, the name of the component and the composer of the mock-up (FRU-258) by @sakuga-agent[bot] in #263
- ci(e2e): give the E2E job twenty minutes by @sakuga-agent[bot] in #272
- feat(console): the frame of a workspace is the dark rail of the mockup (FRU-234) by @sakuga-agent[bot] in #258
- feat(console): a sign-in page of its own, and the tab that asked for the link goes on by itself (FRU-235) by @sakuga-agent[bot] in #259
- feat(console): the Sites screen is the table of the mockup, with a menu on each row (FRU-243) by @sakuga-agent[bot] in #262
- fix(worker): an invitation that was kept is answered as kept when the counts of its message stop (FRU-67) by @sakuga-agent[bot] in #248
- feat(console): the steps of the setup, a callout, option cards and a drawn browser in the kit (FRU-232) by @sakuga-agent[bot] in #260
- feat(widget): the list of the page with its three tabs, at the measures of the mock-up (FRU-259) by @sakuga-agent[bot] in #275
- feat(widget): a link that opens a note on its page (FRU-253) by @sakuga-agent[bot] in #276
- feat(console): the Members screen is the form and the table of the mockup (FRU-247) by @sakuga-agent[bot] in #268
- fix(console): after a site is removed, focus goes to the table and not to the top of the page (FRU-243) by @sakuga-agent[bot] in #280
- feat(console): the Connectors screen is the list and the panel of the mockup (FRU-246) by @sakuga-agent[bot] in #266
- feat(console): a list of a status, a longer name for a button and a named panel in the kit (FRU-232) by @sakuga-agent[bot] in #273
- feat(console): My account lists the browsers where the console is signed in, and ends them (FRU-248) by @sakuga-agent[bot] in #269
- feat(widget): a link to a note whose element is gone opens the list on « Could not be placed » (FRU-253) by @sakuga-agent[bot] in #282
- test(console): the extension stays connected after My account signs browsers out (FRU-248) by @sakuga-agent[bot] in #283
- fix(widget): a second capture over an open composer keeps the note and its frame (FRU-258) by @sakuga-agent[bot] in #278
- feat(worker): a PostgreSQL schema of its own, in a database that exists already (...
v0.2.0
What's Changed
- ci: upload the extension archives from the hidden output directory (FRU-81) by @sakuga-agent[bot] in #101
- fix(worker): the SQLite store names no state, so the thread says New like the badge (FRU-114) by @sakuga-agent[bot] in #102
- docs: the design reference of the Cloud and the simplified extension by @sakuga-agent[bot] in #103
- feat(worker): sessions on a worker that serves several clients, one workspace each (FRU-95) by @sakuga-agent[bot] in #104
- ci: Sakuga Review follows the stable release by @Mheaus in #107
- feat(worker): accounts, workspaces and their sites, served as the client map (FRU-96) by @sakuga-agent[bot] in #105
- docs: the landing of fruitback.com, with the two ways to run Fruitback (FRU-105) by @sakuga-agent[bot] in #110
- feat(worker): sign in to the console with a link sent by e-mail (FRU-98) by @sakuga-agent[bot] in #106
- feat(console): the console of the Cloud, its onboarding in four steps, and the API it calls (FRU-99, FRU-100) by @sakuga-agent[bot] in #109
- feat(worker): sign in with GitHub, by an OAuth App, state and PKCE (FRU-97) by @sakuga-agent[bot] in #111
- fix(console): say so when the worker does not answer, instead of loading for ever by @sakuga-agent[bot] in #113
- fix(worker): the boot log does not call a worker with accounts one public client (FRU-116) by @sakuga-agent[bot] in #118
- feat: the widget as a custom element and as a React component (FRU-126, FRU-127) by @sakuga-agent[bot] in #117
- fix(extension): a site asked for is turned on even when the prompt closes the popup (FRU-118, FRU-117) by @sakuga-agent[bot] in #114
- feat(worker): an e-mail is written in the language of its reader (FRU-119) by @sakuga-agent[bot] in #115
- feat(extension): a site of the reviewer's workspace, turned on in one click (FRU-101) by @sakuga-agent[bot] in #112
- feat: a workspace connects Linear, and a site chooses where its notes go (FRU-121) by @sakuga-agent[bot] in #116
- docs(worker): the runbook of Fruitback Cloud, and a consistent copy of its databases each night (FRU-128) by @sakuga-agent[bot] in #119
- feat(widget): the list of every note of the page, beside the page (FRU-129) by @sakuga-agent[bot] in #121
- fix(widget): a minified name behind a bound prefix, and a bundle chunk, are no source (FRU-113) by @sakuga-agent[bot] in #122
- feat(console): the console in the language of its person, English and French (FRU-120) by @sakuga-agent[bot] in #120
- feat(extension): the popup, the options page and the mounted widget in the language of the reviewer (FRU-131) by @sakuga-agent[bot] in #123
- feat(console): the controls of the console are HeroUI v3, through its own kit (FRU-125) by @sakuga-agent[bot] in #125
- feat(worker): a workspace connects an address that receives each note, signed (FRU-122) by @sakuga-agent[bot] in #124
- feat(console): a workspace connects an address, and sees the notes that did not arrive (FRU-132) by @sakuga-agent[bot] in #126
- feat: a workspace connects Linear with OAuth, and no personal key (FRU-134) by @sakuga-agent[bot] in #127
- fix(worker): a Linear read finds a note by its team and page, and reads the client in the seed (FRU-138) by @sakuga-agent[bot] in #128
- feat: a person signs in with Google (FRU-135) by @sakuga-agent[bot] in #129
- fix(extension): a site that is switched off gives its access back (FRU-115) by @sakuga-agent[bot] in #130
- fix(worker): a worker refuses a delivery that comes back to it (FRU-133) by @sakuga-agent[bot] in #131
- fix(worker): the store of a connector is built per request, and two workspaces are tested with two trackers by @sakuga-agent[bot] in #132
- feat: a connector that its tracker refuses says « Needs attention » by @sakuga-agent[bot] in #133
- feat(widget): a member chooses where a note goes, in the composer by @sakuga-agent[bot] in #135
- docs: cut CLAUDE.md to what no lint rule or test can hold by @sakuga-agent[bot] in #136
- feat(worker): a site sends to a list of places, and a member chooses one for a note by @sakuga-agent[bot] in #134
- test(worker): AccountStore and SessionStore have a conformance suite, and each case a planted violation (FRU-140) by @sakuga-agent[bot] in #137
- fix(worker): the account conformance suite reads the destinations of a site (FRU-140) by @sakuga-agent[bot] in #139
- feat(worker): the accounts can live in PostgreSQL, behind the same AccountStore (FRU-141) by @sakuga-agent[bot] in #138
- ci: run CI on every pull request, whatever its base (FRU-172) by @sakuga-agent[bot] in #140
- ci: publish nothing from a commit that did not pass CI (FRU-172) by @sakuga-agent[bot] in #141
- test(widget): the tests do not read the locale of the shell (FRU-172) by @sakuga-agent[bot] in #142
- feat(worker): the sessions can live in PostgreSQL, behind the same SessionStore (FRU-142) by @sakuga-agent[bot] in #145
- chore: a warning of oxlint is an error, and the root is linted (FRU-172) by @sakuga-agent[bot] in #144
- chore: pnpm install sets a pre-commit and a pre-push hook (FRU-172) by @sakuga-agent[bot] in #146
- feat(worker): better-auth is built in the worker, and switched off (FRU-144) by @sakuga-agent[bot] in #143
- feat(worker): a copy of the database of better-auth opens nothing, even with its secret (FRU-181) by @sakuga-agent[bot] in #153
- feat: run PostgreSQL beside the worker, back it up, and try the restore (FRU-143) by @sakuga-agent[bot] in #147
- ci: mutation testing with StrykerJS, and a score that may not go down (FRU-172) by @sakuga-agent[bot] in #148
- chore: pre-push runs two test files at a time, and hides its repository from the tests (FRU-172) by @sakuga-agent[bot] in #154
- feat(worker): the PostgreSQL database is described and migrated by Drizzle (FRU-180) by @sakuga-agent[bot] in #152
- fix(widget): a note sent after a navigation goes to the page where it was written (FRU-152) by @sakuga-agent[bot] in #155
- test(worker): the token verifier refuses a truncated signature, an oversized token and a token without sub (FRU-178) by @sakuga-agent[bot] in #159
- fix(widget): on a touch screen, say Cancel and give every control room for a thumb (FRU-157) by @sakuga-agent[bot] in #160
- feat(worker): a connector keeps its own settings: its replies, and the stage of a state (FRU-102) by @sakuga-agent[bot] in #157
- test(shared): a seed written at version 1 is still read (FRU-175) by @sakuga-agent[bot] in #162
- fix(widget): a failed first read is not an empty list (FRU-153) by @sakuga-agent[bot] in #156
- fix(widget): no picture of another page beside the place of a note (FRU-152) by @sakuga-agent[bot] in #163
- fix(console): a failed read of the sites is not an empty list (FRU-162) by @sakuga-agent[bot] in #164
- fix(console): at 390 px the workspace screens stop scrolling sideways, and a site shows its host (FRU-159) by @sakuga-agent[bot] in #166
- fix(worker): a connection that PostgreSQL closes in a transaction no longer stops the worker (FRU-187) by @sakuga-agent[bot] in #167
- fix(console): removing a site or disconnecting a source asks twice (FRU-165) by @sakuga-age...