Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 21:30
· 431 commits to main since this release
01a5fc9

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-agent[bot] in #168
  • feat(worker): migrate-to-postgres copies the SQLite accounts and sessions into PostgreSQL (FRU-145) by @sakuga-agent[bot] in #169
  • fix(console): a row added or removed leaves a list that was not read as it is (FRU-162) by @sakuga-agent[bot] in #170
  • fix(console): a refused call says its own cause, and a refused copy says so (FRU-164) by @sakuga-agent[bot] in #179
  • fix(console): at 390 px, /setup fits its header, shows the step's action and stops scrolling sideways (FRU-160) by @sakuga-agent[bot] in #173
  • test(shared): tests hold the identity of a page and the lines of an issue description (FRU-176) by @sakuga-agent[bot] in #172
  • fix(widget): a failed send says what to do next, by its cause (FRU-156) by @sakuga-agent[bot] in #175
  • fix(widget): the replies of a thread stay in a list that scrolls, and a long address wraps (FRU-154) by @sakuga-agent[bot] in #177
  • fix(console): the alert of a problem reads as one, and the hovered main button keeps 4.5:1 (FRU-163) by @sakuga-agent[bot] in #180
  • fix(extension): in the popup, two buttons never touch and a button stays on one line (FRU-169) by @sakuga-agent[bot] in #181
  • feat(console): the panel of a Linear sets the colour of each state and its replies (FRU-102) by @sakuga-agent[bot] in #158
  • fix(console): a site address with no scheme is read as https, and a wrong one gets the console's sentence (FRU-167) by @sakuga-agent[bot] in #182
  • chore: typecheck reads e2e/, playwright.config.ts and the build.ts of each package (FRU-173) by @sakuga-agent[bot] in #176
  • feat: an admin sets every place a site sends to, in order, from the panel of a connector (FRU-123) by @sakuga-agent[bot] in #161
  • test(worker): security.test.ts joins the mutation run; tests hold the cache, CORS and session lifetimes (FRU-179) by @sakuga-agent[bot] in #174
  • test: a test file that nothing runs, an empty test glob and a skip with no reason fail a guard (FRU-174) by @sakuga-agent[bot] in #178
  • fix(playground): on a phone, the toolbar is a block at the end of the page and covers nothing (FRU-171) by @sakuga-agent[bot] in #185
  • feat(worker): several notes in one request, as one parent and its sub-issues (FRU-124) by @sakuga-agent[bot] in #171
  • fix(worker): the adoption of a database of before compares its tables with the baseline first (FRU-189) by @sakuga-agent[bot] in #186
  • chore: the mutation lines go up to what the new tests hold (FRU-172) by @sakuga-agent[bot] in #184
  • feat(worker): the accounts and the workspaces live in the tables of better-auth (FRU-146) by @sakuga-agent[bot] in #188
  • test(worker): assertions kill the mutants a mutation run counted only on a timeout (FRU-190) by @sakuga-agent[bot] in #187
  • fix(extension): the page world keeps the widget it built for the same mount (FRU-186) by @sakuga-agent[bot] in #189
  • chore: the mutation lines of kv.ts, store-config.ts and identity.ts go up (FRU-190) by @sakuga-agent[bot] in #190
  • feat(widget): several notes on one element fan their badges out (FRU-155) by @sakuga-agent[bot] in #193
  • test(console): Confirm and the destination panels in the Playwright suite (FRU-191) by @sakuga-agent[bot] in #192
  • fix(console): under 1280 px the panel of a source opens under its row (FRU-161) by @sakuga-agent[bot] in #195
  • feat(worker): the console signs in with better-auth, beside the path of before (FRU-147) by @sakuga-agent[bot] in #191
  • chore: the mutation line of the worker goes up to 92.5 (FRU-190) by @sakuga-agent[bot] in #194
  • feat(widget): the badge sits outside the corner, the frame is tinted on demand (FRU-158) by @sakuga-agent[bot] in #196
  • fix(console): step 2 of the set-up says where Linear connects (FRU-166) by @sakuga-agent[bot] in #197
  • fix(worker): a batch whose sub-issues Linear refused uses its parent again (FRU-195) by @sakuga-agent[bot] in #199
  • feat: the console signs in with the cookie of better-auth, and holds no token (FRU-148) by @sakuga-agent[bot] in #200
  • test(extension): a spec plants its note after React hydrated the bare site (FRU-186) by @sakuga-agent[bot] in #202
  • test(console): the cookie-session spec ends its routes before its context closes (FRU-148) by @sakuga-agent[bot] in #204
  • feat(widget): in team mode the composer asks for no name the session replaces (FRU-112) by @sakuga-agent[bot] in #203
  • test(worker): the database of a case is dropped when its connections have ended (FRU-196) by @sakuga-agent[bot] in #206
  • feat(worker): four routes of the organization plugin, one role for a member (FRU-149) by @sakuga-agent[bot] in #205
  • style(extension): the popup and the options page wear the tokens of the widget (FRU-170) by @sakuga-agent[bot] in #198
  • fix(worker): a read reports the stages of the tracker of its site (FRU-201) by @sakuga-agent[bot] in #208
  • feat: invite a reviewer, and the screen of the members (FRU-104) by @sakuga-agent[bot] in #210
  • fix(worker): the token of an extension opens no route of the console API (FRU-202) by @sakuga-agent[bot] in #211
  • feat(widget): a send refused by a 401 says to sign in again (FRU-193) by @sakuga-agent[bot] in #207
  • fix(extension): a pattern the browser refuses stops one site, not all of them (FRU-74) by @sakuga-agent[bot] in #212
  • docs: with accounts, the worker key opens the console, and no site holds it (FRU-203) by @sakuga-agent[bot] in #213
  • fix(console): « Sign out » ends the session of before too, and says when it failed (FRU-204) by @sakuga-agent[bot] in #215
  • chore: version 0.2.0 by @sakuga-agent[bot] in #216

Full Changelog: v0.1.0...v0.2.0