Repository navigation
Kazo OS 3.1.0
New
- Apps declare the real-network ports they need; the server relay blocks dangerous ports. An app lists its real-network ports in its definition (RealNetworkPorts = ["tcp/6697"], written realNetworkPorts in manifest.json, checked by the generator and kazopkg). The approval window of network.real.access shows them, and the server relay opens a declared port whose grant carries it on top of AllowedPorts. The new KazoOs:Proxy Tcp and Udp BlockedPorts lists (mail 25/465/587, file sharing and RPC, amplification services) always win; Settings shows them with each app's ports, and the server warns at startup when a list is empty. (server-network-relay.md, 0235-real-network-for-chat-apps.md)
- Apps open TLS connections through the server's relay. KazoTcpClient.ConnectAsync takes KazoTcpConnectOptions { UseTls = true }: the server's relay opens TLS to the target, checks its certificate against the system trust store and TargetHost, and the app reads and writes clear text. A refused certificate throws AuthenticationException (relay code TLS_FAILED); KazoNetworkStream tells the negotiated TLS version and the certificate subject. There is no option to accept an invalid certificate. (0235-real-network-for-chat-apps.md, server-network-relay.md)
- Apps open the files of your network drives. The network drives you mount count as your personal files: an app allowed to read your files (filesystem.user-home.read) now reads them too, with no dangerous capability, and filesystem.user-home.write writes them. Another user's drive and /mnt itself stay system files, and the drive's permissions still apply. (0231-network-drives-count-as-personal-files.md)
- Child windows and dialogs for apps. A window app can open its own windows with ShowWindowAsync and its own modal dialogs with ShowDialogAsync, like Form.Show and Form.ShowDialog in WinForms. The window's component derives from KazoWindowBase and closes with CloseAsync(result); it belongs to the same app and closes with its owner. (window-model.md)
- Frameless windows float on the desktop. A window with the None style is transparent: a click where its app draws nothing reaches the desktop or the window below, so an app with its own skin can float on the desktop (issue #378). (window-model.md)
- Window styles inspired by WinForms, and apps that minimize their own window. A window app can choose the Normal, Tool or None style and turn off its icon, its Maximize and Minimize buttons or its taskbar button, in its manifest or at run time. It can also minimize, maximize, restore, move and resize its own window (issue #384). The OS dialogs now use the Tool style, with Close only and no taskbar button. (window-model.md, 0234-window-styles-inspired-by-winforms.md)
Improved
- New illustrated app icons, shown everywhere. The system apps have new colour icons that show what each app does. The Start menu, the desktop shortcuts and the explorer now draw each app's own icon, installed apps included, instead of one icon per category; an icon pack still replaces them. Apps can read the icon address with KazoAppInfo.IconUrl. (0232-illustrated-app-icons-everywhere.md)
Fixed
- A newly installed app can read your files right away. An app installed with kazopkg or the Kazo OS Store only received its declared capabilities at the next sign-in, so its first launch was refused access to your files. The signed-in user now gets them as soon as the app is installed or updated; dangerous capabilities still need an administrator's approval. (capabilities.md)
- File dialogs open on your home folder and never take the OS down. An Open, Save or Select folder dialog asked without a start folder opened on /home/ followed by the user's identifier, which does not exist, and the OS crashed. It now opens on your home folder (/home/); a missing or unreadable start folder falls back to your home folder, then to /. (sdk-reference.md)
For developers
- App repositories can tag a release from GitHub. The kazoos-solution template has a Tag a release workflow: it tags a commit of main with the app's version and starts the two publishing workflows, so a person or an agent can release without pushing a tag from a computer. (app-repository.md)
- Apps are signed only in the Kazo OS Store repository. KazoOsPack no longer signs packages: the KazoOsKeyGen target, the KazoOsSigningKeyFile property, the generator's keygen and sign commands and the HACKEROS_APP_SIGNING_KEY variable are gone. The kazoos-solution template still publishes the kazoos-packages branch, unsigned; the secret can be deleted from app repositories. (0219-app-authors-signing-tool.md)
- KazoClientWebSocket: apps reach real WebSocket servers without the server. The SDK gains KazoClientWebSocket, shaped like ClientWebSocket (sub-protocols, ConnectAsync, SendAsync, ReceiveAsync, CloseAsync). The OS opens the browser's WebSocket for the app, so it works with no Kazo OS server. It needs the network.real.access capability; an address of the simulated network is refused, and every frame is counted in /proc/net/dev. (sdk-network.md)
- The catalog signing secret is now KAZO_STORE_SIGNING_KEY. The Kazo OS Store catalog signs its packages with the KAZO_STORE_SIGNING_KEY secret (same key as the former HACK_STORE_SIGNING_KEY). The docs and the AppPackageDefaults comment use the new name. (app-installation.md)
- The kazoos-solution template has its launch profile again. The rename to Kazo OS had dropped Properties/launchSettings.json from the host project of the kazoos-solution template. It is back, so dotnet run and Visual Studio start the host on http://localhost:5280 with the browser debugger. (app-repository.md)
- The store workflow of the kazoos-solution template finds an existing fork. publish-to-kazoos-store.yml guessed the fork as /Os-AppMarketPlace. A fork made before the catalog was renamed keeps its old name, so the clone failed. The workflow now asks GitHub for the author's fork of the catalog. (app-repository.md)
All versions: CHANGELOG.md