Releases — what has been published
Every published version of every platform this product runs on, with the day it was released and what changed in it.
Releases
Every published release
The web workspace runs in the browser and needs nothing installed. Every published version of every platform is listed here with its release date and its changes, and each native build keeps its own permanent address so a link printed once keeps working.
Checking the live version record.
Server
Running now
The module that serves the workspace, the API and the edge. It is deployed on this machine and its release record is the one every deploy writes.
Current releaseVersion1.9.38
Released
Commit
f224f4114- Jobs now has the shared assistant with a Voice tab, its own tools over jobs' records and its own permissions; the signed-in turn and its deploy are included.
- Operations and surveillance now carry the catalogue in Hindi, with written Hindi names and descriptions and the correct language on every item.
- SMS through the messaging provider is now only the normal-text OTP for mobile verification; WhatsApp, voice and transaction SMS through that provider are removed, and WhatsApp is the direct Meta integration.
- The mailbox shows remote images only after you ask: the Show images control loads https images, while scripts and forms stay blocked, and the Razorpay settlement logo renders correctly.
- The release record and the Android R8 mapping are tracked, the WhatsApp webhook is live and verified, and the surveillance Hindi catalogue and live-view crash are fixed.
Earlier versions (42)
Version1.9.37
Released
Commit
e3a0a22ad- The assistant now offers a Voice tab in operations, remote access and surveillance, through the shared proxy and the module's own permissions.
- A refused external sign-in now lands on an honest, localized page that says why and offers Try again or a password sign-in, instead of a 404.
- One invoice per order and one credit note per refund are now database constraints in surveillance, and a live viewing session shows a camera-side consent decision made after it opened.
Version1.9.36
Released
Commit
90e388ad1- Google sign-in is now offered by the surveillance module beside the password and second-factor sign-in, through the shared external-sign-in owner with its own store and state.
- Two pending migrations are included: the Alfred audio and battery alert kinds, and the assistant engine extraction. Sign-in, cameras, live view and recordings are unchanged.
Version1.9.35
Released
Commit
2ead3f90- One common app bar on web, Android and Windows; the logo and name appear once, in the drawer. The web drawer opens as a translucent overlay with a professional slide and scrim animation, and the screen stays visible behind it. Android keeps the dimmed screen behind its drawer, and Windows moved the brand into the navigation pane and the narrow drawer.
Version1.9.34
Released
Commit
782dd55a- Signed-in web screens now fill the viewport. One menu toggle in the left corner opens the same overlay drawer on every module; each module supplies its own server-derived menu, and the drawer is built once in core.
Version1.9.33
Released
Commit
da9735de- The language and account menus keep their full 44 px target at 320 px and 200% text: the shell no longer widens, and the language panel stays inside the screen.
Version1.9.32
Released
Commit
d9b67b93- The language and account menus open above the page again at every width, while the shell still reflows at 200% text on a 320 px screen.
Version1.9.31
Released
Commit
3899e014- The surveillance web workspace now reflows cleanly at 200% text on a 320 px screen: the language and account controls shrink, and the account menu stays inside the viewport instead of widening the page.
Version1.9.30
Released
Commit
47a6777e- The surveillance Analysis section now has a camera-frame screen: choose a permitted camera, take a frame or choose a JPEG or PNG, see its exact facts, describe it, and read the stored answer back from the module. The screen never presents a description as a recognition.
Version1.9.29
Released
Commit
bcb4ad1b- The surveillance landing imports only the narrow kit brand, icon and depth surfaces, removing unused media and data libraries from the cold page.
- Cold landing transfer falls by about 40 percent while the motion gate, one scroll owner and accessibility stay unchanged.
Version1.9.28
Released
Commit
8a622b66- Surveillance accepts the trusted loopback proxy's forwarded HTTPS scheme so the NAS media cookie is Secure behind TLS.
- The AI service health endpoint no longer discloses provider or key counts to an unauthenticated caller.
- Release 1.9.28 carries the reviewed security and role-window deployment path.
Version1.9.27
Released
Commit
3bf7a03e- The surveillance workspace now names its KYC review desk, and the reviewer permission is granted by the role seed.
- Reviewers reach the queue and profile decisions; ordinary accounts are refused, and own KYC stays separate.
Version1.9.26
Released
Commit
b1e27ed1- Declared form-group catalogue prices, the refund admin queue and buyer wording, and the showcase control entrance.
Version1.9.20
Released
Commit
86e1d094267a3d9d3ae130354799da3a026a36e5- The shared landing footer keeps the caveat, tagline and links inside the brand column at 320px and 200% text, so the phone page no longer widens. The footer caveat remains part of the footer rather than a white strip above it.
Version1.9.18
Released
Commit
57601768ecc4154f0fd4b4d1dc3786590ffe9cc9- The module's honest caveat now sits inside the footer under the product line, instead of a separate white strip between the sign-in band and the footer. The footer and the caveat are one surface, and the old standalone footnote is gone from every shared landing page.
Version1.9.17
Released
Commit
45ef35e6- The shared live player uses the HLS engine where available so the media token is sent as an Authorization header on every stream request; the native fallback stays for browsers without that engine.
Version1.9.16
Released
Commit
ec0ca35e- The Billing accounts screen keeps the provider verification result after the check, instead of replacing it with the previous unverified list row.
Version1.9.15
Released
Commit
c13d8e98- The recurring mandate now ends inside the provider's 30-year validity instead of asking for 100 years, so UPI Autopay and card authorisation can complete.
Version1.9.14
Released
Commit
b4693be9- A safe Billing accounts screen lists each configured payment connection with its provider, mode, approval, plan and webhook readiness, and a Verify button that checks the provider plan. It has no field for a key or a secret.
Version1.9.13
Released
Commit
eb9fd848- A billing account whose provider or domain approval is pending or suspended no longer receives a gateway, so it cannot open a checkout or accept a notification. The safe account list names the approval state.
Version1.9.12
Released
Commit
b5e6bc2e- Administrators can list the configured billing accounts and check an account's plan with its provider. The answer states only safe facts - whether a plan or webhook secret is present and whether the provider accepted the check - and never returns a key id or a secret.
Version1.9.11
Released
Commit
fe207ba0- The release history now shows each release's exact India time beside its date in both languages; the shared landing package is rebuilt before the client so the deployed page carries the change.
Version1.9.10
Released
Commit
ec9b74d5- Every release in the version history now shows the exact India time beside its date, in both English and Hindi, so two releases on the same day can be told apart.
Version1.9.9
Released
Commit
6d967205- Billing accounts now own their gateway connection and webhook signature, so a second account cannot act through the platform account.
- A subscription, its charges and its payment events now carry the billing account that owns them, and a verified notification cannot change another account's subscription.
Version1.9.6
Released
Commit
9351c0cd- The refund ground is now a required closed set: a refund is accepted only for a duplicate charge, a service that was never delivered, or a charge taken after a cancellation. The server refuses any other reason and the existing refusal shape is unchanged.
- The detection-zone dialog, the upload page and the camera-consent dialog now use the shared form page and field owners, with numbered sections, an error summary, the module's own refusal and a server-confirmed result.
Version1.9.5
Released
Commit
7bd44441- Email-code sign-in is live: the shared sign-in form offers a password or an email code, with separate accessible hints for the address and the code, a server-stated code length and resend wait, a generic answer for every address, and the same session handoff as the password route. Password sign-in is unchanged.
Version1.9.3
Released
Commit
27fcee83- Email OTP server, the subscription buyer screens, OpenRouter free-model AI routing and the latest surveillance form/list screens are included. Email OTP sign-in screen is not yet part of this release; password sign-in is unchanged.
Version1.9.2
Released
Commit
b60d39a0- Security-layer and billing maintenance: the tenant-scoped billing subscription schema is in place, and the server-side Razorpay integration is included but disabled until configured. No price is charged.
Version1.9.1
Released
Commit
78f8c526- Core scheduler retention duties, fail-closed tenant policies, the bounded diagnostics ingest and the shared form-owner screens are deployed.
Version1.9.0
Released
Commit
9db3b056- The module resolves its tenant from the request host before sign-in, and the tenant's stored brand, display name, support contact and colour roles are painted on its own sign-in and workspace pages. Tenant administration, invitations, the catalogue with plans and orders, entitlements, export and deletion are part of the release, and row-level isolation fails closed instead of falling open to the platform tenant.
- Twenty more surveillance screens are declared once in the module's form contract and render through the shared field, selector and button owners. Sign-in asks for a second factor only when the server says one is required, and the account list states whether each account holds an active factor.
- App-lock and attestation challenges are connected to the sign-in chain, so a locked app does not open without the server's verification. The surveillance media chain keeps one gap-free recording timeline under concurrent appends, and a recording still missing its upload after 24 hours becomes Failed with RecordingUnavailable instead of Complete.
- The web and native clients carry the 320px and 1280px navigation, brand and read-frame fixes, and the public landing offers Android 0.1.2 for both phone processors: arm64-v8a at 15,094,074 bytes and armeabi-v7a at 9,620,390 bytes, each with its checksum.
Version1.8.5
Released
Commit
67ab73f2- The surveillance module resolves its tenant from the request host before sign-in: an unknown host answers 404, a suspended tenant 403 and an archived tenant 410, and a tenant cannot be chosen by a request header.
- The tenant directory is the module's own: six management routes and one public read, two permissions, and row-level isolation in the module's own database. The platform tenant answers on cam.pehromgroup.com and on the loopback addresses this machine's clients use.
- The NAS recordings browser and player are live: configurable SMB or folder sources, range streaming, H.264 playback, H.265 transcoding, thumbnails and download, in English and Hindi at 320px.
Version1.8.3
Released
Commit
aa0bea4d- The surveillance server publishes the report and layout kinds, revokes an older share link by id, names the release state and labels, enforces two-person approval, publishes integration kinds, the storage policy and attachable uploads, and records camera-host capabilities.
Version1.8.2
Released
Commit
660e4062- The workspace gains the video wall, notification preferences and the upload screen, and the web client now uses the one generated frame with no duplicated keys.
Version1.8.1
Released
Commit
286b2d14- The workspace gains a self/device camera: the camera on the machine you are using can be previewed live, with its own permission and a release when you stop or leave. No recording and no upload.
- The reset screen and its mail configuration are carried in the same release.
Version1.8.0
Released
Commit
b9d8b4a0- The surveillance catalogue reads answer from the module own rules: alert event kinds, location node kinds, analytics rule kinds, camera command kinds, privacy mask effects, maintenance windows, investigation owners, upload options and storage coverage.
- A maintenance window now has a real end beside its promised end, and the billing seed follows the permission catalogue so the seeded roles hold every permission again.
- The password-reset mail is configured with the domain sender, and a bilingual reset screen accepts the link and sets the new password.
Version1.7.0
Released
Commit
fbbf6a5c- The camera's own machine now drives the camera: the agent opens it, learns what it is and what it can do, reads its streams, steers it, reads its presets and its firmware, and starts and stops its recording. The camera's own credential stays on the camera's machine.
- The module now publishes a signed release for a camera host to take, and the host learns of a recording to make on its next poll: the module asks, the host makes it, and the module records what became of it.
- The protocol's own wording has one owner in both languages, so the module that signs a release and the host that verifies it cover the same bytes - which is why the engine's contract moved from version 2 to version 3 and a module on the old library now refuses to start.
Version1.6.0
Released
Commit
90f43ea- The camera's own machine now runs an agent that answers for it: the protocol's canonical text and digest have one owner, so a proof the agent signs and a command the module signs are proved by the same rule in both languages.
- The module now asks the camera host that holds the camera to make a recording, instead of pretending that a recording happened, and the host is told on its next turn.
- The wallet's security gate now reads the database's real grants instead of believing them, and a missing grant closes the gate.
- The committed model snapshot is now checked against the committed migrations, so a snapshot that has drifted is caught before it reaches a database.
Version1.5.1
Released
Commit
2fa8437- The assistant now shows the model exactly how to call a tool, so a call reaches the tool it names instead of failing on a label.
Version1.5.0
Released
Commit
f2677e9- Money can go back: a refund is a record of its own, an invoice and a credit note are real documents, and a tax that has not been configured issues no document at all.
- The books can prove themselves: the reconciliation now reads the payment gateway's own settlement record, so a disagreement is found instead of counted.
- A file can now be attached to a recording or to evidence, and it is kept only when the scan says it is clean.
Version1.4.0
Released
Commit
9df7133- A person can now ask the server who they are: their own address, their own state and their own devices - and they can end one of their own devices.
- Every module now answers the same health question in the same shape, and the persistence, the configuration and the diagnostics each have one owner instead of several copies.
- The web client's shared parts - the way a call leaves, the session, and the states a screen shows - live in one package now, so two screens cannot disagree about what a refusal says.
Version1.3.0
Released
Commit
c8e98d3- The routes now answer a refusal in the language the caller asked for, and the notification badge counts what the server says rather than what the browser counts.
- A person can enrol their own device and an administrator can refuse it, and a refused device's sessions end at once.
- The diagnostics now index every failure, keep their retention as configuration an operator can read, and refuse a write that would pass a declared budget.
- Money can be collected in a sandbox - and only in a sandbox: the payment page asks for no card detail, the notification is signed, and a forged one is never written down.
Version1.2.1
Released
Commit
76ab976- The landing on cam.pehromgroup.com is the surveillance product's own page again; the unlisted-share landing moves to the market module's own domain, market.pehromgroup.com.
Version1.0.0
Released
Commit
86ea736- One premium component library now serves the web, Android and desktop apps: a shared shell, person menu, page header, fields, buttons, banners, state views and panels, with generated design tokens; the screens moved onto it and the duplicate interface code was deleted.
- A refused sign-in on the web and Android now clears both fields, so the address can be corrected without retyping the password.
- The wallet security gate is closed: the ledger is append-only, every journal entry is linked, the 13-test security matrix passes, and the module and core suites pass with the database isolation bracket unchanged.
- Uploads can be cancelled, recover after a crash, sweep abandoned staging files without starving a live upload, and reserve storage quota one writer at a time.
Web
Available now
The workspace itself, served as static files. Nothing to install, and it is updated when the module is.
Current releaseVersion1.9.38
Released
Commit
f224f4114- Jobs now has the shared assistant with a Voice tab, its own tools over jobs' records and its own permissions; the signed-in turn and its deploy are included.
- Operations and surveillance now carry the catalogue in Hindi, with written Hindi names and descriptions and the correct language on every item.
- SMS through the messaging provider is now only the normal-text OTP for mobile verification; WhatsApp, voice and transaction SMS through that provider are removed, and WhatsApp is the direct Meta integration.
- The mailbox shows remote images only after you ask: the Show images control loads https images, while scripts and forms stay blocked, and the Razorpay settlement logo renders correctly.
- The release record and the Android R8 mapping are tracked, the WhatsApp webhook is live and verified, and the surveillance Hindi catalogue and live-view crash are fixed.
Open the workspaceEarlier versions (42)
Version1.9.37
Released
Commit
e3a0a22ad- The assistant now offers a Voice tab in operations, remote access and surveillance, through the shared proxy and the module's own permissions.
- A refused external sign-in now lands on an honest, localized page that says why and offers Try again or a password sign-in, instead of a 404.
- One invoice per order and one credit note per refund are now database constraints in surveillance, and a live viewing session shows a camera-side consent decision made after it opened.
Version1.9.36
Released
Commit
90e388ad1- Google sign-in is now offered by the surveillance module beside the password and second-factor sign-in, through the shared external-sign-in owner with its own store and state.
- Two pending migrations are included: the Alfred audio and battery alert kinds, and the assistant engine extraction. Sign-in, cameras, live view and recordings are unchanged.
Version1.9.35
Released
Commit
2ead3f90- One common app bar on web, Android and Windows; the logo and name appear once, in the drawer. The web drawer opens as a translucent overlay with a professional slide and scrim animation, and the screen stays visible behind it. Android keeps the dimmed screen behind its drawer, and Windows moved the brand into the navigation pane and the narrow drawer.
Version1.9.34
Released
Commit
782dd55a- Signed-in web screens now fill the viewport. One menu toggle in the left corner opens the same overlay drawer on every module; each module supplies its own server-derived menu, and the drawer is built once in core.
Version1.9.33
Released
Commit
da9735de- The language and account menus keep their full 44 px target at 320 px and 200% text: the shell no longer widens, and the language panel stays inside the screen.
Version1.9.32
Released
Commit
d9b67b93- The language and account menus open above the page again at every width, while the shell still reflows at 200% text on a 320 px screen.
Version1.9.31
Released
Commit
3899e014- The surveillance web workspace now reflows cleanly at 200% text on a 320 px screen: the language and account controls shrink, and the account menu stays inside the viewport instead of widening the page.
Version1.9.30
Released
Commit
47a6777e- The surveillance Analysis section now has a camera-frame screen: choose a permitted camera, take a frame or choose a JPEG or PNG, see its exact facts, describe it, and read the stored answer back from the module. The screen never presents a description as a recognition.
Version1.9.29
Released
Commit
bcb4ad1b- The surveillance landing imports only the narrow kit brand, icon and depth surfaces, removing unused media and data libraries from the cold page.
- Cold landing transfer falls by about 40 percent while the motion gate, one scroll owner and accessibility stay unchanged.
Version1.9.28
Released
Commit
8a622b66- Surveillance accepts the trusted loopback proxy's forwarded HTTPS scheme so the NAS media cookie is Secure behind TLS.
- The AI service health endpoint no longer discloses provider or key counts to an unauthenticated caller.
- Release 1.9.28 carries the reviewed security and role-window deployment path.
Version1.9.27
Released
Commit
3bf7a03e- The surveillance workspace now names its KYC review desk, and the reviewer permission is granted by the role seed.
- Reviewers reach the queue and profile decisions; ordinary accounts are refused, and own KYC stays separate.
Version1.9.26
Released
Commit
b1e27ed1- Declared form-group catalogue prices, the refund admin queue and buyer wording, and the showcase control entrance.
Version1.9.20
Released
Commit
86e1d094267a3d9d3ae130354799da3a026a36e5- The shared landing footer keeps the caveat, tagline and links inside the brand column at 320px and 200% text, so the phone page no longer widens. The footer caveat remains part of the footer rather than a white strip above it.
Version1.9.18
Released
Commit
57601768ecc4154f0fd4b4d1dc3786590ffe9cc9- The module's honest caveat now sits inside the footer under the product line, instead of a separate white strip between the sign-in band and the footer. The footer and the caveat are one surface, and the old standalone footnote is gone from every shared landing page.
Version1.9.17
Released
Commit
45ef35e6- The shared live player uses the HLS engine where available so the media token is sent as an Authorization header on every stream request; the native fallback stays for browsers without that engine.
Version1.9.16
Released
Commit
ec0ca35e- The Billing accounts screen keeps the provider verification result after the check, instead of replacing it with the previous unverified list row.
Version1.9.15
Released
Commit
c13d8e98- The recurring mandate now ends inside the provider's 30-year validity instead of asking for 100 years, so UPI Autopay and card authorisation can complete.
Version1.9.14
Released
Commit
b4693be9- A safe Billing accounts screen lists each configured payment connection with its provider, mode, approval, plan and webhook readiness, and a Verify button that checks the provider plan. It has no field for a key or a secret.
Version1.9.13
Released
Commit
eb9fd848- A billing account whose provider or domain approval is pending or suspended no longer receives a gateway, so it cannot open a checkout or accept a notification. The safe account list names the approval state.
Version1.9.12
Released
Commit
b5e6bc2e- Administrators can list the configured billing accounts and check an account's plan with its provider. The answer states only safe facts - whether a plan or webhook secret is present and whether the provider accepted the check - and never returns a key id or a secret.
Version1.9.11
Released
Commit
fe207ba0- The release history now shows each release's exact India time beside its date in both languages; the shared landing package is rebuilt before the client so the deployed page carries the change.
Version1.9.10
Released
Commit
ec9b74d5- Every release in the version history now shows the exact India time beside its date, in both English and Hindi, so two releases on the same day can be told apart.
Version1.9.9
Released
Commit
6d967205- Billing accounts now own their gateway connection and webhook signature, so a second account cannot act through the platform account.
- A subscription, its charges and its payment events now carry the billing account that owns them, and a verified notification cannot change another account's subscription.
Version1.9.6
Released
Commit
9351c0cd- The refund ground is now a required closed set: a refund is accepted only for a duplicate charge, a service that was never delivered, or a charge taken after a cancellation. The server refuses any other reason and the existing refusal shape is unchanged.
- The detection-zone dialog, the upload page and the camera-consent dialog now use the shared form page and field owners, with numbered sections, an error summary, the module's own refusal and a server-confirmed result.
Version1.9.5
Released
Commit
7bd44441- Email-code sign-in is live: the shared sign-in form offers a password or an email code, with separate accessible hints for the address and the code, a server-stated code length and resend wait, a generic answer for every address, and the same session handoff as the password route. Password sign-in is unchanged.
Version1.9.3
Released
Commit
27fcee83- Email OTP server, the subscription buyer screens, OpenRouter free-model AI routing and the latest surveillance form/list screens are included. Email OTP sign-in screen is not yet part of this release; password sign-in is unchanged.
Version1.9.2
Released
Commit
b60d39a0- Security-layer and billing maintenance: the tenant-scoped billing subscription schema is in place, and the server-side Razorpay integration is included but disabled until configured. No price is charged.
Version1.9.1
Released
Commit
78f8c526- Core scheduler retention duties, fail-closed tenant policies, the bounded diagnostics ingest and the shared form-owner screens are deployed.
Version1.9.0
Released
Commit
9db3b056- The module resolves its tenant from the request host before sign-in, and the tenant's stored brand, display name, support contact and colour roles are painted on its own sign-in and workspace pages. Tenant administration, invitations, the catalogue with plans and orders, entitlements, export and deletion are part of the release, and row-level isolation fails closed instead of falling open to the platform tenant.
- Twenty more surveillance screens are declared once in the module's form contract and render through the shared field, selector and button owners. Sign-in asks for a second factor only when the server says one is required, and the account list states whether each account holds an active factor.
- App-lock and attestation challenges are connected to the sign-in chain, so a locked app does not open without the server's verification. The surveillance media chain keeps one gap-free recording timeline under concurrent appends, and a recording still missing its upload after 24 hours becomes Failed with RecordingUnavailable instead of Complete.
- The web and native clients carry the 320px and 1280px navigation, brand and read-frame fixes, and the public landing offers Android 0.1.2 for both phone processors: arm64-v8a at 15,094,074 bytes and armeabi-v7a at 9,620,390 bytes, each with its checksum.
Version1.8.5
Released
Commit
67ab73f2- The surveillance module resolves its tenant from the request host before sign-in: an unknown host answers 404, a suspended tenant 403 and an archived tenant 410, and a tenant cannot be chosen by a request header.
- The tenant directory is the module's own: six management routes and one public read, two permissions, and row-level isolation in the module's own database. The platform tenant answers on cam.pehromgroup.com and on the loopback addresses this machine's clients use.
- The NAS recordings browser and player are live: configurable SMB or folder sources, range streaming, H.264 playback, H.265 transcoding, thumbnails and download, in English and Hindi at 320px.
Version1.8.3
Released
Commit
aa0bea4d- The surveillance server publishes the report and layout kinds, revokes an older share link by id, names the release state and labels, enforces two-person approval, publishes integration kinds, the storage policy and attachable uploads, and records camera-host capabilities.
Version1.8.2
Released
Commit
660e4062- The workspace gains the video wall, notification preferences and the upload screen, and the web client now uses the one generated frame with no duplicated keys.
Version1.8.1
Released
Commit
286b2d14- The workspace gains a self/device camera: the camera on the machine you are using can be previewed live, with its own permission and a release when you stop or leave. No recording and no upload.
- The reset screen and its mail configuration are carried in the same release.
Version1.8.0
Released
Commit
b9d8b4a0- The surveillance catalogue reads answer from the module own rules: alert event kinds, location node kinds, analytics rule kinds, camera command kinds, privacy mask effects, maintenance windows, investigation owners, upload options and storage coverage.
- A maintenance window now has a real end beside its promised end, and the billing seed follows the permission catalogue so the seeded roles hold every permission again.
- The password-reset mail is configured with the domain sender, and a bilingual reset screen accepts the link and sets the new password.
Version1.7.0
Released
Commit
fbbf6a5c- The camera's own machine now drives the camera: the agent opens it, learns what it is and what it can do, reads its streams, steers it, reads its presets and its firmware, and starts and stops its recording. The camera's own credential stays on the camera's machine.
- The module now publishes a signed release for a camera host to take, and the host learns of a recording to make on its next poll: the module asks, the host makes it, and the module records what became of it.
- The protocol's own wording has one owner in both languages, so the module that signs a release and the host that verifies it cover the same bytes - which is why the engine's contract moved from version 2 to version 3 and a module on the old library now refuses to start.
Version1.6.0
Released
Commit
90f43ea- The camera's own machine now runs an agent that answers for it: the protocol's canonical text and digest have one owner, so a proof the agent signs and a command the module signs are proved by the same rule in both languages.
- The module now asks the camera host that holds the camera to make a recording, instead of pretending that a recording happened, and the host is told on its next turn.
- The wallet's security gate now reads the database's real grants instead of believing them, and a missing grant closes the gate.
- The committed model snapshot is now checked against the committed migrations, so a snapshot that has drifted is caught before it reaches a database.
Version1.5.1
Released
Commit
2fa8437- The assistant now shows the model exactly how to call a tool, so a call reaches the tool it names instead of failing on a label.
Version1.5.0
Released
Commit
f2677e9- Money can go back: a refund is a record of its own, an invoice and a credit note are real documents, and a tax that has not been configured issues no document at all.
- The books can prove themselves: the reconciliation now reads the payment gateway's own settlement record, so a disagreement is found instead of counted.
- A file can now be attached to a recording or to evidence, and it is kept only when the scan says it is clean.
Version1.4.0
Released
Commit
9df7133- A person can now ask the server who they are: their own address, their own state and their own devices - and they can end one of their own devices.
- Every module now answers the same health question in the same shape, and the persistence, the configuration and the diagnostics each have one owner instead of several copies.
- The web client's shared parts - the way a call leaves, the session, and the states a screen shows - live in one package now, so two screens cannot disagree about what a refusal says.
Version1.3.0
Released
Commit
c8e98d3- The routes now answer a refusal in the language the caller asked for, and the notification badge counts what the server says rather than what the browser counts.
- A person can enrol their own device and an administrator can refuse it, and a refused device's sessions end at once.
- The diagnostics now index every failure, keep their retention as configuration an operator can read, and refuse a write that would pass a declared budget.
- Money can be collected in a sandbox - and only in a sandbox: the payment page asks for no card detail, the notification is signed, and a forged one is never written down.
Version1.2.1
Released
Commit
76ab976- The landing on cam.pehromgroup.com is the surveillance product's own page again; the unlisted-share landing moves to the market module's own domain, market.pehromgroup.com.
Version1.0.0
Released
Commit
86ea736- One premium component library now serves the web, Android and desktop apps: a shared shell, person menu, page header, fields, buttons, banners, state views and panels, with generated design tokens; the screens moved onto it and the duplicate interface code was deleted.
- A refused sign-in on the web and Android now clears both fields, so the address can be corrected without retyping the password.
- The wallet security gate is closed: the ledger is append-only, every journal entry is linked, the 13-test security matrix passes, and the module and core suites pass with the database isolation bracket unchanged.
- Uploads can be cancelled, recover after a crash, sweep abandoned staging files without starving a live upload, and reserve storage quota one writer at a time.
Android
Available now
A native app for Android phones and tablets. The published build is listed below with its version, date, size and checksum; no store listing is required.
Current releaseVersion0.1.4
Released
Commit
daacb431e- Live talk no longer closes the app. The release build keeps the WebRTC runtime that the voice engine loads by name, so opening a camera's live talk starts the session instead of aborting in the native library.
Newer phones and tablets (64-bit)
arm64-v8aPehromGroup-Android-0.1.4-arm64-v8a.apk
- Size
- 14.4 MiB
- Checksum
sha256:f9be2a6b77e422529cabab5e4072978548cb751d70af6f04b0bcf6d3d8fc6acc
Older 32-bit phones and tablets
armeabi-v7aPehromGroup-Android-0.1.4-armeabi-v7a.apk
- Size
- 9.2 MiB
- Checksum
sha256:1ed81a0006c391d29cd1106d5eea12841813999798272ed4a0602aea6b0e27ba
Earlier versions (4)
Version0.1.3
Released
Commit
4d5156e6d- Every list and form now keeps its place. Going back from a camera, a conversation or a person returns to the list you left, with the same search, filter and scroll position, and turning the phone or changing the language no longer loses what you typed.
- Documents can be sent to KYC from the phone: a PDF or an image is picked, uploaded in resumable pieces, and the server stores and hashes exactly those bytes. Cancelling or choosing the wrong file is refused in words, and the upload can be repeated without starting again.
- The app speaks Hindi throughout: the catalogue, the camera screens, the drawer and the account panel are written in Hindi, and the language you choose stays chosen after a reload instead of falling back to English.
- Navigation is one row with a searchable drawer: favourites and recent visits are kept per account, the drawer can be pinned on a wide screen and behaves as a sheet on a phone, and it closes with the close control, the background, Escape or a selection. The account row shows the roles the server gave you, never a guess.
- Motion is quieter and the phone's own reduced-motion setting is obeyed: a screen fades in once, a card presses in, and with reduced motion on, nothing moves at all. The assistant, including spoken replies, is available where the module offers it.
Newer phones and tablets (64-bit)
arm64-v8aPehromGroup-Android-0.1.3-arm64-v8a.apk
- Size
- 14.3 MiB
- Checksum
sha256:8612a38875a9423a2ff8dd6beabda6783ebc0b6ab7502cd270af815fd2953fc5
Older 32-bit phones and tablets
armeabi-v7aPehromGroup-Android-0.1.3-armeabi-v7a.apk
- Size
- 9.1 MiB
- Checksum
sha256:3120a1a194556da6902fb5deb3dff417336d8363c901014f4517f2e40ebc5468
Version0.1.2
Released
Commit
80f0f5f0- Live talk reaches a camera: the phone opens a talk session, sends its microphone to the camera over WebRTC, and offers mute, hold and close. The audio peer joins only when a camera host answers; when none does, the session says so instead of pretending it is connected.
- The Android download is now one package per phone processor: a 32-bit phone downloads the 9.6 MB package built for it, and a newer 64-bit phone the 15.1 MB one, instead of every phone carrying every processor's native libraries.
- Events are on the phone: the list shows what happened at each camera, and a person can acknowledge an event and then resolve it, with the server recording each step.
- Camera care is on the phone: a saved position is written to the camera's own preset list, and a movement command is refused in words when the camera has never answered.
- Sharing is on the phone: a share link is created and shown once, access is granted to an address, and a zone can be switched on or off, all against the module's own rules.
- The video wall and viewer layouts are on the phone: a display opens its tiles into a real viewing session, and a layout can be created or edited and saved.
- Patrol and reports are on the phone: a run starts, an observation is added, the run completes, and a report runs on the server from the phone.
Newer phones and tablets (64-bit)
arm64-v8aPehromGroup-Android-0.1.2-arm64-v8a.apk
- Size
- 14.4 MiB
- Checksum
sha256:3a047cb835f5aae8d1eb13fbd2d15709b0674186aad958c5a853d7560ac7fd28
Older 32-bit phones and tablets
armeabi-v7aPehromGroup-Android-0.1.2-armeabi-v7a.apk
- Size
- 9.2 MiB
- Checksum
sha256:50a5a06617646d347eac829fed918ddfee7f59746940c7be97a8b5d71a95772f
Version0.1.1
Released
Commit
73ae93c4e864358c5a7d04afeb1b16f2edfc3e53- The Android package is rebuilt from a changed native version input, proving that one native change produces a new published version, a new signed file and a new permanent download address.
app-release.apk
- Size
- 2.7 MiB
- Checksum
sha256:705e344953f9d25af1eb65b03a700797d609dd9f27aa329af8f729f3cc273e31
Version0.1.0
Released
Commit
8224e144c29ee67f8ed6582440795912d78fdd82- The first signed Android build of the product is published: the native app for phones and tablets, with the existing camera slice, sign-in and the bilingual shell.
app-release.apk
- Size
- 2.7 MiB
- Checksum
sha256:aa3c4c40a1ac0eac615318f903a793ac9c3e72afd722c0645f02be59a36854ea
Desktop
Available now
A native app for Windows. The published package is listed below with its version, date, size and checksum.
Current releaseVersion1.0.1
Released
Commit
269d01da9015cfe812fa26962b39e26b327c0905- Every drawer destination now paints its own icon, and the icon keeps a readable ink on the highlighted row: 12.47:1 where it measured 1.23:1, and 13.79:1 on every other row.
- Every drawer destination announces its own name in English and Hindi instead of the control type, and the selected destination still says it is selected.
- The full product name stays visible in the drawer at 1280 and 320 pixels and at 200 percent text, instead of being cut in the middle of a word.
- The package is the framework-dependent, symbol-free and unsigned Release build: Windows shows its SmartScreen prompt the first time the app starts, and no signature is claimed anywhere.
PehromGroup-Desktop-1.0.1-win-x64.zip
- Size
- 28.5 MiB
- Checksum
sha256:ad3570d4df701020b655121cf79878e34a332c6914733ac13a1bf24120c71419
Earlier versions (1)
Version1.0.0
Released
Commit
f7169f9e0- Windows desktop 1.0.0 is re-cut from the current main tree: the high-contrast icon fix paints every navigation, account and refresh icon in the system's own high-contrast foreground, and the primary sign-in action carries its visible word as its accessible name.
- The package now carries the closed drawer and command-centre shell, the 320 px and 200 percent text fixes, and a symbol-free Release publish of the same five desktop apps.
PehromGroup-Desktop-1.0.0-win-x64.zip
- Size
- 28.5 MiB
- Checksum
sha256:04252652165ebdfb7c31a734a683fa619b230b8a5cf2eef5744da9ca0776152f
An app appears here only when a real build exists. Nothing on this page stands in for something that has not been built.