Skip to main content

Audiolog - Releases

← App details

Nextcloud 35

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 34

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 33

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.2
Release Details
UpdatedSept. 30, 2026, 4:34 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturemLPxAiFz3UxWMEmH1w3Buf/3hm2aARL3wWTldpqE3f0DL6YkvbtT8G5JfBlORqu6lO8YrQSrfEu44sHkT4CWwNmAV6msKjMOx9E5HS/Qir7zEuTd2TPEJofdUpOitW/+r5NwCoOAzTyOH54Lr7k9ie6Co/Ftond9WZcPf413+vBNJECXHnthY9t2g6qV0AN1xCzD17geXQ+90oukhH9TyFO2XrVF6ybkA9H2yW9f3TzO2/cOjE/sYBfc98xuzzPiyrrkJJeAbsV/1XC2lIewJd9CQQpG/lLhwVbGk7yjZqWmvklTCOr4QespM8DdrTPk3TsgcxSqzEir2WhzzF3hcoFjk/nq1SY2ntjCBR3mDZ25rB4Yl3C5uHlAXL9AH9aVv0fB00PQfrzwd1hgPSOXmMJmxLwUKOQAVrMIJh9CXKNpFvolDtzSQlOBro4EkAWdhCrNygz1ASuQnVfk+JN40i00Xxd2oMkBx/hCJ8S7s1R+YmQgZ7tSSheubtApo8FyI49Eqg4uzG2FhCXAXuY3NaO0mBtXX8ojhwH4Mskqat1BB+uMC2dMmw9vUD3e4hMVZCj/AhhJvm/K1qxtHDa3o9BNTgu5vZ31p82S/C6H69VUoKADeS0OQFJpwPmmKMmRqHIUWPmJTDQoaEV2qbJbh2weeT3bDJZKDWS161Q8zmU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.1
Release Details
UpdatedSept. 30, 2026, 1:04 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignatureeIMJBMeM6ILZ+4FKLprfxwC2uNmLV+mvTnY1IhMoG4qw5mBnsJhiKwzfAwYPUwq21B7/w21h8+a50ilmbbIDqaVPvZ38TjAAmZhNMYEN6NH7RjWkxephnZF/y04YJzH7zQf7qpA3b+nlayw/UeFbOCSXOKGghyUvrwkasHZv84wkwC3mGpMWa3pYu8Z8MDWBh1+thtEvoAjLfHDgqqwrcWZlkc4G7LztmrH40LNmE4MC7JD87UWvo6z2oNvg7Ca9MEyh6J+sMmM13pJPxRaXsQ7IOb6UJeJ3FeasWADcFZtExwCBJDjnHYngT9uJU05VKwT+4sUQ8jIqG9/Ocgg3uecB0f1cFPuwa365teQpiZPAlMzxLMp1dI3/VDB9taYHtLFpVp4RPxTmSH4+1YS+7/LM4NsrV07AAFFrsqDlb1WilQjDpi7AR2+SvgZYBhEpUm4f5WALpXZywFiChJ0UXSY7Do2uG0G3+P0hGVRLUr2TygpFCPR3jhVduTsVqw8//HO8pwUrPCM9ONJIiApsNLaBDlg2hj6lowXIUSGcNwu8c1dO3R3LqGzfkzh0B0dIlTS0ofV5WU/sTvOzAScppLx5rYg2zC5FMw69SelpS1d69ZsKygHQqISUzx6enVoeD1l9Jz9h9zmMvtaT9nAO9Ni0TdVv556G5IIZASA661I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.0
Release Details
UpdatedSept. 30, 2026, 12:52 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturepqUFDqHo2IT7tbv28S6d+KrmPqGWik2QJA8S3bjtAodt4OIVG+M/k9FCYficxEOJofq601dA1rpEMq42Rw/adREC7tXEVjMTj/3UoEHN93BB7ZfCOzeY0sF4pLmrmce1tVMFT2rZSgoXhQwLL2Cy5MEvNHBQbPZMqan6U3p2R1rTVl5QEOBkyThXy1EmCn5E0xE/9JYaBuhcXM8P60CwE3FeO8cAUNAFMGK0/G7a9OklXMOYn0onF+AQuzS/wKVhaFM217ejPZAQz42Nmmm2isu6Ez7JyMn1s6NmDUtBABKDHd/vmQ6rTXf4+kV/AnQ+Yc3UCi6U2qTtjvQlaqMev4S/byN+JUgHuCNHm+cR5GnPGy1bXkB1UaNsBh0ppWM6UOV4AukmFKisTqi3xvYDQ1QdORfDcnBEkMURQPSAPINmKsYS9qkAHAUBzZ9Lwz6BK9mZDNTCkgH4pTahOM4S+jM78fxVMr1uDSlCFW2mj1JaMRHrDfSv+GOM4fwj1VFg/GUpojewa5LO1QX5+yT1s6aCzc5cSIB5Ly5NeuWyuWg8fUQdg3o+UYy+KlrTFOvZBEP1sydt2mrC5zDyifzNHOLLaJE8JybBTUqaUg6Ru2z2UadmR7jH/YmrRHjvxIri4YkQu+FtFDJZQolKWgh3aZr11sEEkLzJijaZBTgVejM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 32

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.2
Release Details
UpdatedSept. 30, 2026, 4:34 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturemLPxAiFz3UxWMEmH1w3Buf/3hm2aARL3wWTldpqE3f0DL6YkvbtT8G5JfBlORqu6lO8YrQSrfEu44sHkT4CWwNmAV6msKjMOx9E5HS/Qir7zEuTd2TPEJofdUpOitW/+r5NwCoOAzTyOH54Lr7k9ie6Co/Ftond9WZcPf413+vBNJECXHnthY9t2g6qV0AN1xCzD17geXQ+90oukhH9TyFO2XrVF6ybkA9H2yW9f3TzO2/cOjE/sYBfc98xuzzPiyrrkJJeAbsV/1XC2lIewJd9CQQpG/lLhwVbGk7yjZqWmvklTCOr4QespM8DdrTPk3TsgcxSqzEir2WhzzF3hcoFjk/nq1SY2ntjCBR3mDZ25rB4Yl3C5uHlAXL9AH9aVv0fB00PQfrzwd1hgPSOXmMJmxLwUKOQAVrMIJh9CXKNpFvolDtzSQlOBro4EkAWdhCrNygz1ASuQnVfk+JN40i00Xxd2oMkBx/hCJ8S7s1R+YmQgZ7tSSheubtApo8FyI49Eqg4uzG2FhCXAXuY3NaO0mBtXX8ojhwH4Mskqat1BB+uMC2dMmw9vUD3e4hMVZCj/AhhJvm/K1qxtHDa3o9BNTgu5vZ31p82S/C6H69VUoKADeS0OQFJpwPmmKMmRqHIUWPmJTDQoaEV2qbJbh2weeT3bDJZKDWS161Q8zmU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.1
Release Details
UpdatedSept. 30, 2026, 1:04 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignatureeIMJBMeM6ILZ+4FKLprfxwC2uNmLV+mvTnY1IhMoG4qw5mBnsJhiKwzfAwYPUwq21B7/w21h8+a50ilmbbIDqaVPvZ38TjAAmZhNMYEN6NH7RjWkxephnZF/y04YJzH7zQf7qpA3b+nlayw/UeFbOCSXOKGghyUvrwkasHZv84wkwC3mGpMWa3pYu8Z8MDWBh1+thtEvoAjLfHDgqqwrcWZlkc4G7LztmrH40LNmE4MC7JD87UWvo6z2oNvg7Ca9MEyh6J+sMmM13pJPxRaXsQ7IOb6UJeJ3FeasWADcFZtExwCBJDjnHYngT9uJU05VKwT+4sUQ8jIqG9/Ocgg3uecB0f1cFPuwa365teQpiZPAlMzxLMp1dI3/VDB9taYHtLFpVp4RPxTmSH4+1YS+7/LM4NsrV07AAFFrsqDlb1WilQjDpi7AR2+SvgZYBhEpUm4f5WALpXZywFiChJ0UXSY7Do2uG0G3+P0hGVRLUr2TygpFCPR3jhVduTsVqw8//HO8pwUrPCM9ONJIiApsNLaBDlg2hj6lowXIUSGcNwu8c1dO3R3LqGzfkzh0B0dIlTS0ofV5WU/sTvOzAScppLx5rYg2zC5FMw69SelpS1d69ZsKygHQqISUzx6enVoeD1l9Jz9h9zmMvtaT9nAO9Ni0TdVv556G5IIZASA661I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.0
Release Details
UpdatedSept. 30, 2026, 12:52 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturepqUFDqHo2IT7tbv28S6d+KrmPqGWik2QJA8S3bjtAodt4OIVG+M/k9FCYficxEOJofq601dA1rpEMq42Rw/adREC7tXEVjMTj/3UoEHN93BB7ZfCOzeY0sF4pLmrmce1tVMFT2rZSgoXhQwLL2Cy5MEvNHBQbPZMqan6U3p2R1rTVl5QEOBkyThXy1EmCn5E0xE/9JYaBuhcXM8P60CwE3FeO8cAUNAFMGK0/G7a9OklXMOYn0onF+AQuzS/wKVhaFM217ejPZAQz42Nmmm2isu6Ez7JyMn1s6NmDUtBABKDHd/vmQ6rTXf4+kV/AnQ+Yc3UCi6U2qTtjvQlaqMev4S/byN+JUgHuCNHm+cR5GnPGy1bXkB1UaNsBh0ppWM6UOV4AukmFKisTqi3xvYDQ1QdORfDcnBEkMURQPSAPINmKsYS9qkAHAUBzZ9Lwz6BK9mZDNTCkgH4pTahOM4S+jM78fxVMr1uDSlCFW2mj1JaMRHrDfSv+GOM4fwj1VFg/GUpojewa5LO1QX5+yT1s6aCzc5cSIB5Ly5NeuWyuWg8fUQdg3o+UYy+KlrTFOvZBEP1sydt2mrC5zDyifzNHOLLaJE8JybBTUqaUg6Ru2z2UadmR7jH/YmrRHjvxIri4YkQu+FtFDJZQolKWgh3aZr11sEEkLzJijaZBTgVejM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 31

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.2
Release Details
UpdatedSept. 30, 2026, 4:34 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturemLPxAiFz3UxWMEmH1w3Buf/3hm2aARL3wWTldpqE3f0DL6YkvbtT8G5JfBlORqu6lO8YrQSrfEu44sHkT4CWwNmAV6msKjMOx9E5HS/Qir7zEuTd2TPEJofdUpOitW/+r5NwCoOAzTyOH54Lr7k9ie6Co/Ftond9WZcPf413+vBNJECXHnthY9t2g6qV0AN1xCzD17geXQ+90oukhH9TyFO2XrVF6ybkA9H2yW9f3TzO2/cOjE/sYBfc98xuzzPiyrrkJJeAbsV/1XC2lIewJd9CQQpG/lLhwVbGk7yjZqWmvklTCOr4QespM8DdrTPk3TsgcxSqzEir2WhzzF3hcoFjk/nq1SY2ntjCBR3mDZ25rB4Yl3C5uHlAXL9AH9aVv0fB00PQfrzwd1hgPSOXmMJmxLwUKOQAVrMIJh9CXKNpFvolDtzSQlOBro4EkAWdhCrNygz1ASuQnVfk+JN40i00Xxd2oMkBx/hCJ8S7s1R+YmQgZ7tSSheubtApo8FyI49Eqg4uzG2FhCXAXuY3NaO0mBtXX8ojhwH4Mskqat1BB+uMC2dMmw9vUD3e4hMVZCj/AhhJvm/K1qxtHDa3o9BNTgu5vZ31p82S/C6H69VUoKADeS0OQFJpwPmmKMmRqHIUWPmJTDQoaEV2qbJbh2weeT3bDJZKDWS161Q8zmU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.1
Release Details
UpdatedSept. 30, 2026, 1:04 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignatureeIMJBMeM6ILZ+4FKLprfxwC2uNmLV+mvTnY1IhMoG4qw5mBnsJhiKwzfAwYPUwq21B7/w21h8+a50ilmbbIDqaVPvZ38TjAAmZhNMYEN6NH7RjWkxephnZF/y04YJzH7zQf7qpA3b+nlayw/UeFbOCSXOKGghyUvrwkasHZv84wkwC3mGpMWa3pYu8Z8MDWBh1+thtEvoAjLfHDgqqwrcWZlkc4G7LztmrH40LNmE4MC7JD87UWvo6z2oNvg7Ca9MEyh6J+sMmM13pJPxRaXsQ7IOb6UJeJ3FeasWADcFZtExwCBJDjnHYngT9uJU05VKwT+4sUQ8jIqG9/Ocgg3uecB0f1cFPuwa365teQpiZPAlMzxLMp1dI3/VDB9taYHtLFpVp4RPxTmSH4+1YS+7/LM4NsrV07AAFFrsqDlb1WilQjDpi7AR2+SvgZYBhEpUm4f5WALpXZywFiChJ0UXSY7Do2uG0G3+P0hGVRLUr2TygpFCPR3jhVduTsVqw8//HO8pwUrPCM9ONJIiApsNLaBDlg2hj6lowXIUSGcNwu8c1dO3R3LqGzfkzh0B0dIlTS0ofV5WU/sTvOzAScppLx5rYg2zC5FMw69SelpS1d69ZsKygHQqISUzx6enVoeD1l9Jz9h9zmMvtaT9nAO9Ni0TdVv556G5IIZASA661I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.0
Release Details
UpdatedSept. 30, 2026, 12:52 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturepqUFDqHo2IT7tbv28S6d+KrmPqGWik2QJA8S3bjtAodt4OIVG+M/k9FCYficxEOJofq601dA1rpEMq42Rw/adREC7tXEVjMTj/3UoEHN93BB7ZfCOzeY0sF4pLmrmce1tVMFT2rZSgoXhQwLL2Cy5MEvNHBQbPZMqan6U3p2R1rTVl5QEOBkyThXy1EmCn5E0xE/9JYaBuhcXM8P60CwE3FeO8cAUNAFMGK0/G7a9OklXMOYn0onF+AQuzS/wKVhaFM217ejPZAQz42Nmmm2isu6Ez7JyMn1s6NmDUtBABKDHd/vmQ6rTXf4+kV/AnQ+Yc3UCi6U2qTtjvQlaqMev4S/byN+JUgHuCNHm+cR5GnPGy1bXkB1UaNsBh0ppWM6UOV4AukmFKisTqi3xvYDQ1QdORfDcnBEkMURQPSAPINmKsYS9qkAHAUBzZ9Lwz6BK9mZDNTCkgH4pTahOM4S+jM78fxVMr1uDSlCFW2mj1JaMRHrDfSv+GOM4fwj1VFg/GUpojewa5LO1QX5+yT1s6aCzc5cSIB5Ly5NeuWyuWg8fUQdg3o+UYy+KlrTFOvZBEP1sydt2mrC5zDyifzNHOLLaJE8JybBTUqaUg6Ru2z2UadmR7jH/YmrRHjvxIri4YkQu+FtFDJZQolKWgh3aZr11sEEkLzJijaZBTgVejM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 30

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.2
Release Details
UpdatedSept. 30, 2026, 4:34 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturemLPxAiFz3UxWMEmH1w3Buf/3hm2aARL3wWTldpqE3f0DL6YkvbtT8G5JfBlORqu6lO8YrQSrfEu44sHkT4CWwNmAV6msKjMOx9E5HS/Qir7zEuTd2TPEJofdUpOitW/+r5NwCoOAzTyOH54Lr7k9ie6Co/Ftond9WZcPf413+vBNJECXHnthY9t2g6qV0AN1xCzD17geXQ+90oukhH9TyFO2XrVF6ybkA9H2yW9f3TzO2/cOjE/sYBfc98xuzzPiyrrkJJeAbsV/1XC2lIewJd9CQQpG/lLhwVbGk7yjZqWmvklTCOr4QespM8DdrTPk3TsgcxSqzEir2WhzzF3hcoFjk/nq1SY2ntjCBR3mDZ25rB4Yl3C5uHlAXL9AH9aVv0fB00PQfrzwd1hgPSOXmMJmxLwUKOQAVrMIJh9CXKNpFvolDtzSQlOBro4EkAWdhCrNygz1ASuQnVfk+JN40i00Xxd2oMkBx/hCJ8S7s1R+YmQgZ7tSSheubtApo8FyI49Eqg4uzG2FhCXAXuY3NaO0mBtXX8ojhwH4Mskqat1BB+uMC2dMmw9vUD3e4hMVZCj/AhhJvm/K1qxtHDa3o9BNTgu5vZ31p82S/C6H69VUoKADeS0OQFJpwPmmKMmRqHIUWPmJTDQoaEV2qbJbh2weeT3bDJZKDWS161Q8zmU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.1
Release Details
UpdatedSept. 30, 2026, 1:04 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignatureeIMJBMeM6ILZ+4FKLprfxwC2uNmLV+mvTnY1IhMoG4qw5mBnsJhiKwzfAwYPUwq21B7/w21h8+a50ilmbbIDqaVPvZ38TjAAmZhNMYEN6NH7RjWkxephnZF/y04YJzH7zQf7qpA3b+nlayw/UeFbOCSXOKGghyUvrwkasHZv84wkwC3mGpMWa3pYu8Z8MDWBh1+thtEvoAjLfHDgqqwrcWZlkc4G7LztmrH40LNmE4MC7JD87UWvo6z2oNvg7Ca9MEyh6J+sMmM13pJPxRaXsQ7IOb6UJeJ3FeasWADcFZtExwCBJDjnHYngT9uJU05VKwT+4sUQ8jIqG9/Ocgg3uecB0f1cFPuwa365teQpiZPAlMzxLMp1dI3/VDB9taYHtLFpVp4RPxTmSH4+1YS+7/LM4NsrV07AAFFrsqDlb1WilQjDpi7AR2+SvgZYBhEpUm4f5WALpXZywFiChJ0UXSY7Do2uG0G3+P0hGVRLUr2TygpFCPR3jhVduTsVqw8//HO8pwUrPCM9ONJIiApsNLaBDlg2hj6lowXIUSGcNwu8c1dO3R3LqGzfkzh0B0dIlTS0ofV5WU/sTvOzAScppLx5rYg2zC5FMw69SelpS1d69ZsKygHQqISUzx6enVoeD1l9Jz9h9zmMvtaT9nAO9Ni0TdVv556G5IIZASA661I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.0
Release Details
UpdatedSept. 30, 2026, 12:52 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturepqUFDqHo2IT7tbv28S6d+KrmPqGWik2QJA8S3bjtAodt4OIVG+M/k9FCYficxEOJofq601dA1rpEMq42Rw/adREC7tXEVjMTj/3UoEHN93BB7ZfCOzeY0sF4pLmrmce1tVMFT2rZSgoXhQwLL2Cy5MEvNHBQbPZMqan6U3p2R1rTVl5QEOBkyThXy1EmCn5E0xE/9JYaBuhcXM8P60CwE3FeO8cAUNAFMGK0/G7a9OklXMOYn0onF+AQuzS/wKVhaFM217ejPZAQz42Nmmm2isu6Ez7JyMn1s6NmDUtBABKDHd/vmQ6rTXf4+kV/AnQ+Yc3UCi6U2qTtjvQlaqMev4S/byN+JUgHuCNHm+cR5GnPGy1bXkB1UaNsBh0ppWM6UOV4AukmFKisTqi3xvYDQ1QdORfDcnBEkMURQPSAPINmKsYS9qkAHAUBzZ9Lwz6BK9mZDNTCkgH4pTahOM4S+jM78fxVMr1uDSlCFW2mj1JaMRHrDfSv+GOM4fwj1VFg/GUpojewa5LO1QX5+yT1s6aCzc5cSIB5Ly5NeuWyuWg8fUQdg3o+UYy+KlrTFOvZBEP1sydt2mrC5zDyifzNHOLLaJE8JybBTUqaUg6Ru2z2UadmR7jH/YmrRHjvxIri4YkQu+FtFDJZQolKWgh3aZr11sEEkLzJijaZBTgVejM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 29

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.2
Release Details
UpdatedSept. 30, 2026, 4:34 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturemLPxAiFz3UxWMEmH1w3Buf/3hm2aARL3wWTldpqE3f0DL6YkvbtT8G5JfBlORqu6lO8YrQSrfEu44sHkT4CWwNmAV6msKjMOx9E5HS/Qir7zEuTd2TPEJofdUpOitW/+r5NwCoOAzTyOH54Lr7k9ie6Co/Ftond9WZcPf413+vBNJECXHnthY9t2g6qV0AN1xCzD17geXQ+90oukhH9TyFO2XrVF6ybkA9H2yW9f3TzO2/cOjE/sYBfc98xuzzPiyrrkJJeAbsV/1XC2lIewJd9CQQpG/lLhwVbGk7yjZqWmvklTCOr4QespM8DdrTPk3TsgcxSqzEir2WhzzF3hcoFjk/nq1SY2ntjCBR3mDZ25rB4Yl3C5uHlAXL9AH9aVv0fB00PQfrzwd1hgPSOXmMJmxLwUKOQAVrMIJh9CXKNpFvolDtzSQlOBro4EkAWdhCrNygz1ASuQnVfk+JN40i00Xxd2oMkBx/hCJ8S7s1R+YmQgZ7tSSheubtApo8FyI49Eqg4uzG2FhCXAXuY3NaO0mBtXX8ojhwH4Mskqat1BB+uMC2dMmw9vUD3e4hMVZCj/AhhJvm/K1qxtHDa3o9BNTgu5vZ31p82S/C6H69VUoKADeS0OQFJpwPmmKMmRqHIUWPmJTDQoaEV2qbJbh2weeT3bDJZKDWS161Q8zmU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.1
Release Details
UpdatedSept. 30, 2026, 1:04 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignatureeIMJBMeM6ILZ+4FKLprfxwC2uNmLV+mvTnY1IhMoG4qw5mBnsJhiKwzfAwYPUwq21B7/w21h8+a50ilmbbIDqaVPvZ38TjAAmZhNMYEN6NH7RjWkxephnZF/y04YJzH7zQf7qpA3b+nlayw/UeFbOCSXOKGghyUvrwkasHZv84wkwC3mGpMWa3pYu8Z8MDWBh1+thtEvoAjLfHDgqqwrcWZlkc4G7LztmrH40LNmE4MC7JD87UWvo6z2oNvg7Ca9MEyh6J+sMmM13pJPxRaXsQ7IOb6UJeJ3FeasWADcFZtExwCBJDjnHYngT9uJU05VKwT+4sUQ8jIqG9/Ocgg3uecB0f1cFPuwa365teQpiZPAlMzxLMp1dI3/VDB9taYHtLFpVp4RPxTmSH4+1YS+7/LM4NsrV07AAFFrsqDlb1WilQjDpi7AR2+SvgZYBhEpUm4f5WALpXZywFiChJ0UXSY7Do2uG0G3+P0hGVRLUr2TygpFCPR3jhVduTsVqw8//HO8pwUrPCM9ONJIiApsNLaBDlg2hj6lowXIUSGcNwu8c1dO3R3LqGzfkzh0B0dIlTS0ofV5WU/sTvOzAScppLx5rYg2zC5FMw69SelpS1d69ZsKygHQqISUzx6enVoeD1l9Jz9h9zmMvtaT9nAO9Ni0TdVv556G5IIZASA661I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.0
Release Details
UpdatedSept. 30, 2026, 12:52 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturepqUFDqHo2IT7tbv28S6d+KrmPqGWik2QJA8S3bjtAodt4OIVG+M/k9FCYficxEOJofq601dA1rpEMq42Rw/adREC7tXEVjMTj/3UoEHN93BB7ZfCOzeY0sF4pLmrmce1tVMFT2rZSgoXhQwLL2Cy5MEvNHBQbPZMqan6U3p2R1rTVl5QEOBkyThXy1EmCn5E0xE/9JYaBuhcXM8P60CwE3FeO8cAUNAFMGK0/G7a9OklXMOYn0onF+AQuzS/wKVhaFM217ejPZAQz42Nmmm2isu6Ez7JyMn1s6NmDUtBABKDHd/vmQ6rTXf4+kV/AnQ+Yc3UCi6U2qTtjvQlaqMev4S/byN+JUgHuCNHm+cR5GnPGy1bXkB1UaNsBh0ppWM6UOV4AukmFKisTqi3xvYDQ1QdORfDcnBEkMURQPSAPINmKsYS9qkAHAUBzZ9Lwz6BK9mZDNTCkgH4pTahOM4S+jM78fxVMr1uDSlCFW2mj1JaMRHrDfSv+GOM4fwj1VFg/GUpojewa5LO1QX5+yT1s6aCzc5cSIB5Ly5NeuWyuWg8fUQdg3o+UYy+KlrTFOvZBEP1sydt2mrC5zDyifzNHOLLaJE8JybBTUqaUg6Ru2z2UadmR7jH/YmrRHjvxIri4YkQu+FtFDJZQolKWgh3aZr11sEEkLzJijaZBTgVejM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 28

Audiolog 1.0.5
Release Details
UpdatedOct. 8, 2026, 4:22 p.m.
Changelog

Security

  • Google API keys (Gemini and Cloud Speech-to-Text) are now sent in the x-goog-api-key header instead of the ?key= query string. Before, a provider error (for example a 400 from Gemini) put the full URL, key included, in the exception message, which reached nextcloud.log and, for background jobs, the error field returned by /api/status to the user. Provider error messages are now masked before they reach the log, the job record or the HTTP response. As a precaution, rotate the Gemini and Google STT API keys configured in Audiolog, since they may already be in old log files.
  • Exporting tasks to Deck no longer writes straight into Deck's database tables. Any user of the app could create cards on any board of the instance by sending another board's list id. Cards are now created through Deck's own services (CardService, StackService, BoardService, PermissionService), which apply Deck's sharing rules, activity and notifications; Audiolog also checks that the list belongs to the chosen board and that the user can edit it, and refuses otherwise (HTTP 403). Checked against Deck 1.12 to 1.19 (Nextcloud 28 to 35). Deleted lists and archived boards are refused with a clear message, and if Deck fails in the middle of an export the answer lists the cards already created, so a retry does not duplicate them.
  • The live transcription proxy (/api/stt/recognize), which spends the admin's Google key, is now limited to 30 requests per minute per user through Nextcloud's rate limiter (a normal session sends about 12).
  • ffmpeg and ffprobe now run with -protocol_whitelist file,pipe and -format_whitelist limited to media demuxers, and files whose content is not audio or video (checked on the bytes) or is a playlist or manifest (#EXTM3U, ffconcat, XML such as a DASH <MPD>) are refused even when named like audio or video. Before, a manifest saved as .mp4 could point ffmpeg to file:// paths of other users' recordings. When extraction fails, the message now says whether the format is not supported (listing the accepted ones), ffmpeg is missing or the extraction timed out, instead of always asking to install ffmpeg. Before, a playlist saved as .mp4 in Nextcloud could make older ffmpeg versions (for example the one in Debian 12) fetch URLs of the internal network from the server. Every ffmpeg call goes through proc_open with an argument list, without a shell. Their error output goes to a private temporary file instead of a pipe, so a corrupted file that makes ffmpeg print an error per frame can no longer leave the request or the background job stuck, and every call has a time limit after which the process is killed.

Changed

  • The store description (English, Portuguese and Spanish) no longer says that live transcription with an external API key is restricted to admins: that option never existed. It now describes the server-side proxy and the per-user limit. The unused realtime_stt_admin_only setting is removed from the stored configuration on the next save of the admin settings.

  • The page no longer adds Gemini, OpenAI, Google Speech or the Ollama URL to its Content Security Policy: the browser never calls a provider directly (everything goes through Audiolog's own endpoints), and the internal Ollama address no longer appears in a response header.

  • Interface translations: about 85 strings that showed in Portuguese for English users and 170 for Spanish users are now translated, the admin page script uses t() for every text, and dates follow the user's locale. The server's own messages are translated too: API errors (size, type, daily quota, Deck, paths, live transcription), success messages, the admin healthcheck and connection test, the Markdown task file and the description of Deck cards. Every string in use exists in English, Portuguese and Spanish, and a test fails if lib/ returns a user-facing text that does not go through IL10N. Background-job failures report a translated generic message, with the details only in the server log. The default "Transcript" title, the "(named)" suffix of the speaker-naming note and the "(unintelligible part)" marker of live transcription are translated as well.

  • The live transcription refine pass no longer sends a prompt fixed in Brazilian Portuguese from the browser; the server builds it in the language the admin configured, so English and Spanish users get the refined transcript in their language.

Removed

  • Dead code: the Gemini Live WebSocket client in the page script (about 230 lines that nothing called; gemini-live already fell back to Web Speech), the unrouted ncFile endpoint method, getTaskStatus, findStaleRunning, and the unused realtime_stt_model setting (removed from the stored configuration on the next save).

Fixed

  • Users outside the allowed groups now get a translated "Access denied" page (HTTP 403) instead of the app interface, whose actions all failed.
  • "Test connection" and the healthcheck now use Nextcloud's HTTP client, like the processing itself. Before, they used raw cURL and reported "OK" for a local Ollama that the processing could not reach, because Nextcloud blocks local addresses unless allow_local_remote_servers is enabled. The blocked case now shows that setting, and the README documents it. This also removes curl_close(), deprecated in PHP 8.5.
  • Temporary copies of the audio (video extraction, duration probe, long-audio chunks, DOCX export, background-job uploads) are created through Nextcloud's ITempManager with 0600 permissions and deleted in every case. Before, they stayed in /tmp whenever the provider failed.
  • Long Google Speech-to-Text transcriptions poll the operation on v1p1beta1, the API version that created it (it used v1).
  • Task extraction (for Deck export) only reads the task table the prompt asks for, or a bullet list under a tasks heading ("Tasks", "Next steps", "Action items" and their Portuguese and Spanish equivalents, the same names for both shapes). Before, any three-column table of the minutes (participants, for example) became tasks, and bullet tasks such as "- Send report - Owner: Ana" were dropped.
  • The admin's "maximum file size" setting is now enforced (it was saved but never checked) when audio is processed, for uploads and for files picked from Nextcloud (HTTP 413). It does not apply to saving the user's own recording, so long meetings are always stored.
  • When saving a recording fails, the page shows the server's reason and keeps the audio in the browser (IndexedDB) for the recovery prompt. Before, the live transcription flow dropped the audio and kept only the fast transcript, and the recorder's local copy was not offered by the recovery prompt. "Process now" on the recovery prompt also deleted the local copy before processing; it now deletes it only after processing succeeds, and keeps it recoverable otherwise. Uploaded files must be audio or video according to their content, not only to the type the browser declares (HTTP 415).
  • The Deck board picker lists every board the user can edit, including boards shared through a group or a circle, and no longer lists archived boards or boards the user can only read. Board titles are no longer written to the log.
  • Live transcription with Google Cloud Speech-to-Text never started ("Invalid configuration"): the page still expected the API key in the browser after the key moved to the server-side proxy.
  • The app tarball is now built with git archive from an explicit list of versioned paths and checked before signing. The 1.0.3 and 1.0.4 tarballs also contained the developer's local .remember/ session notes (no credentials).
  • Renaming a recording saved with a title (stored in Audiolog/<title>/) failed with "File not found", or renamed a file with the same name at the Audiolog/ root. Notes and DOCX saved for those recordings were not linked to them either, so "delete with outputs" left them behind. Each saved note or document is now linked separately, instead of replacing the previous one.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturekWzGnMyq+WCaK77QxV97lGOvBaSIVO8+otfsz9M75PxDV7DdZ131Jh5anb66CsPo
4CW4ai/QwmOyeQZcXAdKMDT3vTuv2TGvi4TuR8dtF3+1AkmCuSRfP8cFKPQpF07y
Q/pt+kk/JXZF6ppm2I4mjP8hUVDE12wqWmFr7b56x7t8BUnauqwtLS9xTWsxLxmV
cCQXZgIk9xZLVUpZaYLyFCgsaez1jX95GL24bzmENeailFXSRW2DdsNJftqIdGiN
MGhRHfWq2njxlCC4uvMct9p9/yiiDT5BiPxXE7NIawDgda4R5tMvgsIZ5k5DItV1
haRnGWGhhBN+w5U9uzD2QoxQgqWQ6T0ukJLS4T/XvbqUsOuEnJH7K0zG//qJtvor
DRcv8o3tgWCO27ehyUTrMWdVQ89ZJjHoduRi4UkoKhpkTprd4VIhd5GSg90puvgi
TIMm7QwNM22S4y1POGAxlzcXHacqaIr/klesj6bcX2gLE2fb3SDtgdU8x6QZ5kKC
CVnVDYpTP2wHMYAyqRiCcr7evNV2MBXDiu/xBv1SSTQgQyjL832kk1uW+rpvsUny
xOjIF/rpd4Pi7xEGh8RhHsaHWKN1kn58NeOWAorJml+oXGQdKJIQ9a2cacNaqk2D
6DIdMo/rPjux8tWR2YKgs2uvMlfdImuKKCjwCYbn/tk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.4
Release Details
UpdatedOct. 8, 2026, 2:35 p.m.
Changelog

Changed

  • The store description no longer lists Gemini Live as a live transcription option. The live options are the browser's Web Speech API and Google Cloud Speech-to-Text; gemini-live is a legacy value that falls back to Web Speech.
  • <summary> and <description> in appinfo/info.xml now come in English (default), Portuguese (pt-br) and Spanish (es), with the same content in the three.

Fixed

  • appinfo/info.xml elements are in the order the app store XSD expects (<settings> before <navigations>), so xmllint against https://apps.nextcloud.com/schema/apps/info.xsd passes.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturebXgKYqgEnzqYge+2gAzHcQOPDIsWXel3f7qqrq1nLPe6M0/EQnJaexI1SAgYpOqi
dMZzO+8u4wgf4YTzId1TLo/Xc+xGb8G9D2a1kmdaFYCGiavnWqePrvGfMectdWzB
xSmfunOUCmJuCXqdJP4i3zSHr/heghoRgQeD41PdtDqmttXpqkRGNQ7+i8mckc5K
bY0gXQGcUv0oL5QQvofnzBnQPPR3purHEVnxVtF/2zQVNVYqAaDGO/ACiV0kdKNv
4YRXnR6ARnnhZQqgJmrS+bxmeJ/g6WDXfgwWVJjK7pRq/l5ixluyGWARs3PzMPWq
E8rPW59dQr8iLZWE0qFBQ2QOjDOeGL/ncyMLOBh16jwAo0AJk1FpNYpsI8MFkJ3n
gj7l96RMEZCe30JSlNeW0PseKOIsCBDFrfQHqh1ZVOCGz3HCrqBjTIfRHAt2t2pB
kichY5EByCILI792/BEw/XzBC80i6VbHkUFRmwfHClRCueUSKfPEax05lcS9GDom
EOGrv8hwKP/+JCd3uoJhRvu0GRjVpBKtStEFP4c0lTT63L/KjNn3/RRzpm0bYL3/
iHeyfx97D4tsaaaJZ61IYX7UveCmnK8oBbCLOhJcvAyt2/OGmcC9jRCYaQEsz/jT
GA2+di8MRZ0wm+vqwb+t3wf2VRpj9WQy81TR5HTJSjs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.3
Release Details
UpdatedOct. 8, 2026, 1:47 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
Signatureba6xPUsB8myM3YXT3RcAZZZDgzVyWu9V4Z/v4X9hB+tS+GKf5ZBZW8xA27q+rz4Z
TfhWpCGvZB6qUXTqHPkhkJ57eA6H/OVDO5Sx8fgcyr9mRAE3MDQj0aPc8l9An0FZ
xLdum7pX1NC+WmxYBXCBOV8oddRq7CWxOBejheDkMiakcahl7PXS+rpIUrAyEliO
CYk5kxKL/b1xUxhMfm1VLIdfIPaMraPcg7L/MOOhfI4eUWYEFe5EEAKmL1gdvX3l
HTI8eV8UW2CwZKuhhf53K562NG8mst5usWLXZRdsAdh1U/YKi2ojVwt4sbBRuoeb
p938m48odbvvXLYWuRbvQ3HM6Qxrb3m8xGI8R7WqmKCNmOLD2KzfltmZ4Dfm/UAn
LtnKQl7LpdGrWVoIZk/NDSIb4PPGKoing8kIpbYq8HUfoPD3nXkWYQF5C/DEWVBw
vjD9k7HRSHCp0YawEpu4njvFZrGuT5wusyt9IC3Lbnpbhpf9VuWQfUgOlsKYjinB
1p/Q1c8vcsQ6AB9b/rybN6FZuJM9gj5axd1u/smA9Z7bHmRSOqgi3bEwmjfRZ24G
76WtYcUtFLcEAMkrHBBFRzIn4+czRqARgeuuMmQi3mvMy3kVn1Qy1xqD3S8LdIV8
y54Suv3mpfrMNyqw2XIrkjrM7EpX/WbujppCiHDKURY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.2
Release Details
UpdatedSept. 30, 2026, 4:34 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturemLPxAiFz3UxWMEmH1w3Buf/3hm2aARL3wWTldpqE3f0DL6YkvbtT8G5JfBlORqu6lO8YrQSrfEu44sHkT4CWwNmAV6msKjMOx9E5HS/Qir7zEuTd2TPEJofdUpOitW/+r5NwCoOAzTyOH54Lr7k9ie6Co/Ftond9WZcPf413+vBNJECXHnthY9t2g6qV0AN1xCzD17geXQ+90oukhH9TyFO2XrVF6ybkA9H2yW9f3TzO2/cOjE/sYBfc98xuzzPiyrrkJJeAbsV/1XC2lIewJd9CQQpG/lLhwVbGk7yjZqWmvklTCOr4QespM8DdrTPk3TsgcxSqzEir2WhzzF3hcoFjk/nq1SY2ntjCBR3mDZ25rB4Yl3C5uHlAXL9AH9aVv0fB00PQfrzwd1hgPSOXmMJmxLwUKOQAVrMIJh9CXKNpFvolDtzSQlOBro4EkAWdhCrNygz1ASuQnVfk+JN40i00Xxd2oMkBx/hCJ8S7s1R+YmQgZ7tSSheubtApo8FyI49Eqg4uzG2FhCXAXuY3NaO0mBtXX8ojhwH4Mskqat1BB+uMC2dMmw9vUD3e4hMVZCj/AhhJvm/K1qxtHDa3o9BNTgu5vZ31p82S/C6H69VUoKADeS0OQFJpwPmmKMmRqHIUWPmJTDQoaEV2qbJbh2weeT3bDJZKDWS161Q8zmU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.1
Release Details
UpdatedSept. 30, 2026, 1:04 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignatureeIMJBMeM6ILZ+4FKLprfxwC2uNmLV+mvTnY1IhMoG4qw5mBnsJhiKwzfAwYPUwq21B7/w21h8+a50ilmbbIDqaVPvZ38TjAAmZhNMYEN6NH7RjWkxephnZF/y04YJzH7zQf7qpA3b+nlayw/UeFbOCSXOKGghyUvrwkasHZv84wkwC3mGpMWa3pYu8Z8MDWBh1+thtEvoAjLfHDgqqwrcWZlkc4G7LztmrH40LNmE4MC7JD87UWvo6z2oNvg7Ca9MEyh6J+sMmM13pJPxRaXsQ7IOb6UJeJ3FeasWADcFZtExwCBJDjnHYngT9uJU05VKwT+4sUQ8jIqG9/Ocgg3uecB0f1cFPuwa365teQpiZPAlMzxLMp1dI3/VDB9taYHtLFpVp4RPxTmSH4+1YS+7/LM4NsrV07AAFFrsqDlb1WilQjDpi7AR2+SvgZYBhEpUm4f5WALpXZywFiChJ0UXSY7Do2uG0G3+P0hGVRLUr2TygpFCPR3jhVduTsVqw8//HO8pwUrPCM9ONJIiApsNLaBDlg2hj6lowXIUSGcNwu8c1dO3R3LqGzfkzh0B0dIlTS0ofV5WU/sTvOzAScppLx5rYg2zC5FMw69SelpS1d69ZsKygHQqISUzx6enVoeD1l9Jz9h9zmMvtaT9nAO9Ni0TdVv556G5IIZASA661I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0
Audiolog 1.0.0
Release Details
UpdatedSept. 30, 2026, 12:52 p.m.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAzCCAusCAhNDMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNTIwMDgwMzMxWhcNMzYwODI1MDgwMzMxWjATMREwDwYD
VQQDDAhhdWRpb2xvZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK8T
VUsi8g9lUAsKobWDvhjTVyUa/QNfLyu69XJkj6P1OtlgaKDWnhVBrWEVmpJxgCzg
slGFcijhuGXPVnXFML5x/iNjqVPf0SlSzgMX5oK5MsxXlsZhtTmbl6Te4at7H+Io
NphckxdhA/sJssHzijHBb9bB5piGhaS3u97JHCKvZWwUuy1aRyDQPRL/YeQPRQVT
qF0b1nYA09DSftQ4sXYQvm6pAfXKmikKOc3FaVjowiLEWVbZ0+ZVVRks1BDoLhwj
9RvjaCoubUjJVSU7bboSrDSDkNJPGENoQAS1FZJD7w2rVARSihicShKCre86SV6b
5X3P83DxdIztdfEVpE8yCuNwb0rbFeo6KHJezCoPlPtJZrA8WIJQ59o1/wTyWkcq
3JQaujF7RfM5n6Q8Ng0DM4V7+8sI0corVkEglt9Ulmn6zVy/SeLwX/PDKgWCpO0Z
iBoekPzvRjiUs/X6cClORqIrrKWUeZJC64OmIrwEjxjAn6CQVY391f3g3lx4Wc+v
ePU2M+r9GzG0fQcmWIfLRTUBFMG/1GGVEHigM8rybAczD39jwBNtEEpPwS0lX7Gh
NmrwGRYNwMWjiz8XAQuo14Z/AxxonsraUju2xV7KsiZpeGwWVkQPJNvSHykNdOrH
llIZ8MGbFzNA5cyWxm2mL+xFa6Yd382u9w7M7lJdAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAAhinRmswt0Lt+yr31bfHuaSQTSwWnGBp3glVR7+dXKUWMXhCcjIZdek
CS9QszTGUAV4uPXliEy9I8qlpZbBYxSwTw2KDPSlTzGjvk5i5Pkq56iHuGNX+KyG
JDuXnjV7S+mvOzi9KHSxVULP9d+MIW24vYqBA3BhZK84B2XJwtdtqGydiomsuSsp
RJeheaF0+9mG5FDXeoR8L4GDDdOdy8b6kozJ3pLywlFVC6P+4VIy7W3kLeYCNcJz
1cZqXa+OQ0jRNS9OVjfs5WHnZx0e9f9604cQVIGoLMdcmhUvIyF03vd07bM1nOqA
G91ZdvWxpJgxo92M76pjiC5mn56CenU=
-----END CERTIFICATE-----
SignaturepqUFDqHo2IT7tbv28S6d+KrmPqGWik2QJA8S3bjtAodt4OIVG+M/k9FCYficxEOJofq601dA1rpEMq42Rw/adREC7tXEVjMTj/3UoEHN93BB7ZfCOzeY0sF4pLmrmce1tVMFT2rZSgoXhQwLL2Cy5MEvNHBQbPZMqan6U3p2R1rTVl5QEOBkyThXy1EmCn5E0xE/9JYaBuhcXM8P60CwE3FeO8cAUNAFMGK0/G7a9OklXMOYn0onF+AQuzS/wKVhaFM217ejPZAQz42Nmmm2isu6Ez7JyMn1s6NmDUtBABKDHd/vmQ6rTXf4+kV/AnQ+Yc3UCi6U2qTtjvQlaqMev4S/byN+JUgHuCNHm+cR5GnPGy1bXkB1UaNsBh0ppWM6UOV4AukmFKisTqi3xvYDQ1QdORfDcnBEkMURQPSAPINmKsYS9qkAHAUBzZ9Lwz6BK9mZDNTCkgH4pTahOM4S+jM78fxVMr1uDSlCFW2mj1JaMRHrDfSv+GOM4fwj1VFg/GUpojewa5LO1QX5+yT1s6aCzc5cSIB5Ly5NeuWyuWg8fUQdg3o+UYy+KlrTFOvZBEP1sydt2mrC5zDyifzNHOLLaJE8JybBTUqaUg6Ru2z2UadmR7jH/YmrRHjvxIri4YkQu+FtFDJZQolKWgh3aZr11sEEkLzJijaZBTgVejM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.1.0