github kizuna-ai-lab/sokuji v0.50.0

latest release: v0.50.1
one hour ago

Organization accounts: choose who pays

  • Organization members can choose whether a session uses the organization's balance or their own from the account panel. The title bar shows the selected payer and its balance; during a session, it stays with that session's payer. (#703)
  • The account panel shows organization and personal balances, the amount available after running-session reservations, estimated remaining hours, and each side's spending over the last 30 days. (#703)
  • Clear notices explain when an organization is out of money, paused, or no longer includes the member, with top-up guidance for organization owners. These notices are localized in all supported app languages. (#703)
  • Accounts outside an organization keep the same session requests, balances, and notices as before. (#703)

Full Changelog: v0.49.0...v0.50.0

All commits since v0.49.0
  • chore(release): v0.50.0
  • Merge pull request #703 from kizuna-ai-lab/feat/org-payer
  • docs(wallet): a docstring on every declaration in the usage helper
  • docs(wallet): docstrings on the usage helper's public surface
  • fix(account): keep the request refs current after commit, not during render
  • fix(account): another identity's figures may not survive the switch
  • fix(account): a superseded usage response may not paint or cache over a newer one
  • fix(account): a stale-refresh, a per-render fetch and an invented zero
  • fix(account): tell 'no usage' apart from 'not known yet'
  • feat(account): choose the payer in the panel, and show both sides' usage
  • Merge pull request #705 from kizuna-ai-lab/fix/soniox-reserve-rates
  • fix(soniox): mirror the backend's new session budget rates and $1.00/h cap
  • Merge pull request #704 from kizuna-ai-lab/chore/drop-form-factor-log
  • chore(diagnostics): drop the output form-factor log line
  • chore(diagnostics): drop the output form-factor log line
  • refactor(account): compute what sessions hold in one helper
  • fix(payer): keep a switch held in memory when another document clears or removes the key
  • i18n(zh): say "reserved" (预留/預留) for what running sessions hold, as the web dashboard does
  • style(account): style the held line under the organization's balance
  • feat(account): show the organization's committed balance, not what is left after holds
  • fix(payer): keep the switch working when the storage cannot hold it
  • test: give the repository-wide import check a 30 s timeout
  • fix(payer): hide the payer line for a running session started with no payer
  • fix(payer): show the running session's payer, not the live switch
  • fix(wallet): warn once on a malformed organization or personal wallet; share the payer field in voice library requests
  • fix(session): keep every organization refusal as itself mid-session; move payerBalance out of the storage module
  • fix(account): do not invent a $0 personal balance; tidy organization refusals
  • fix(account): organization payer gate, notice params and payer display
  • chore(i18n): keep the escaped invisible characters in screenContext
  • feat(account): show organization and personal balances
  • fix(session): organization refusals on voice preview and mid-session reissue
  • feat(session): organization refusal notices
  • fix(session): carry the payer to the voice preview and read it from the shape
  • feat(session): choose who pays before Start
  • fix(account): type personal expiringSoon as the backend sends it
  • feat(account): read organization and personal balances
  • Merge pull request #701 from kizuna-ai-lab/docs/readme-demo-video-v2
  • docs(readme): use re-cut demo video (no clipped sentences)
  • Add language options to README
  • Update README.md
  • Merge pull request #700 from kizuna-ai-lab/docs/readme-demo-video-url
  • docs(readme): replace demo video with 0.49.0 recording
  • Merge pull request #699 from kizuna-ai-lab/docs/readme-demo-video
  • docs(readme): add looping demo GIF, remove old demo video
  • Merge pull request #697 from kizuna-ai-lab/fix/linux-card-bus
  • fix(output-form-factor): bound the cards read, refuse a stale card number
  • fix(output-form-factor): read the bus from the card on PipeWire 0.3
  • Merge pull request #695 from kizuna-ai-lab/feat/output-form-factor
  • feat(audio): a USB output on macOS takes its form factor from its terminal type, as Bluetooth does (#691)
  • test(audio): captured macOS Bluetooth device list as a fixture, its MAC-address uid scrubbed (#691)
  • test(audio): captured macOS and Windows device lists as fixtures, ids scrubbed (#691)
  • fix(audio): the unmatched-output line counts labels, and says so (#691)
  • test(audio): the Chromium pin says what it protects, what it was checked against, and what to do on an upgrade (#691)
  • test(audio): an Electron upgrade fails until the output label rules are checked against its Chromium (#691)
  • feat(audio): the diagnostic log names an output no system device matches, once a session (#691)
  • Merge pull request #696 from kizuna-ai-lab/release/v0.49.0
  • test(audio): the AirPods rewrite keeps Chromium's order when the owner's name holds a rule word (#691)
  • fix(audio): native labels take Chromium's AirPods rewrite, so AirPods match (#691)
  • refactor(audio): one label rule for both helpers' rows (#691)
  • fix(audio): a Windows output carries the label Chromium shows, USB and Bluetooth suffix included (#691)
  • fix(audio): a blank browser label matches no output device (#691)
  • fix(audio): plain PulseAudio null sinks read unknown over virtual (#691)
  • fix(audio): a virtual Windows output reads unknown, whatever form factor it reports (#691)
  • docs(audio): the form factor spec names no test machines or people (#691)
  • docs(audio): the browser default's answer needs no label (#691)
  • fix(audio): a stale answer reads unknown at the lookup at once, not when a re-list lands (#691)
  • fix(audio): macOS raw no longer carries the device UID (#691)
  • fix(audio): the sink watcher pushes on sinks coming and going, and once after a relaunch (#691)
  • fix(audio): spawn the device readers hidden, with stdin and stderr ignored (#691)
  • fix(audio): the form factor log writes through report.ts and never throws into the store (#691)
  • feat(audio): log each outlet's form factor when diagnostics are on (#691)
  • fix(audio): a malformed native answer reads unknown and never takes device listing down (#691)
  • feat(audio): join each output's form factor into the device list, read on events only (#691)
  • fix(audio): a timed-out Linux read starts nothing after its deadline; UTF-8 read whole (#691)
  • feat(audio): read output devices in the main process and push their changes (#691)
  • fix(audio): verify.ps1 reads the --devices array as rows under Windows PowerShell 5.1 (#691)
  • feat(audio): the full macOS terminal type table for Bluetooth outputs (#691)
  • feat(audio): the Windows helper lists render endpoints with their form factor (#691)
  • feat(audio): the macOS helper reports the label the browser shows, and an empty list is not an error (#691)
  • feat(audio): the macOS helper lists output devices with their transport and data source (#691)
  • feat(audio): read the output form factor from pactl (#691)
  • feat(audio): the output form factor's types and label matcher (#691)
  • docs(audio): plan: the retry count is three retries after the first failure (#691)
  • docs(audio): plan review: the browser default among same-named devices, a default sink change on Linux, unmeasured platforms (#691)
  • docs(audio): the output form factor implementation plan (#691)
  • docs(audio): the Bluetooth row reads the terminal type, as the text below it says (#691)
  • docs(audio): the device read says whether it failed (#691)
  • docs(audio): settle the form factor design's review points (#691)
  • docs(audio): design the output device form factor (#691)

Don't miss a new sokuji release

NewReleases is sending notifications on new releases.