Repository navigation
Releases
Releases · Kazo-ca/Os
Kazo OS 3.2.1
Fixed
- Settings kept from before 3.0.0 can be read and saved again. The rename migration of 3.0.0 left most configuration files written before 3.0.0 (/etc/kazoos, ~/.config/kazoos) pointing at deleted content: their settings fell back to the defaults and saving one failed with ProviderFailure, for example when approving an app's access to the real network. The migration now writes those files correctly, and at the first start a one-time repair gives each damaged file its migrated content back, or empties it when that content cannot be proven, and lists each file in /var/log/syslog. (rename-migration.md)
- The Store reads the official catalog again on a profile from before 3.0.0. The rename migration of 3.0.0 changed the address of the official catalog in /etc/kazoos/app-sources.config to a repository that does not exist (KazoOs-AppMarketPlace), so the Store showed "The catalog 'official' could not be read" and no app. The OS now reads the old names of Kazo-ca's app repositories as their current ones (Os-AppMarketPlace, Os-App-*), for catalogs and for apps installed from their repository. (rename-migration.md)
All versions: CHANGELOG.md
Kazo OS 3.2.0
New
- The server issues the real-network grant approved in the OS, with its ports. Once an administrator approves network.real.access, the OS asks the connected server to issue the grant (POST /api/proxy/grants) with the approved ports, kept in the new [real-network-ports] section of /etc/kazoos/app-permissions.config, and checks it again at each sync. An app update that declares a new port asks for approval again. The operator can refuse these grants with KazoOs:Proxy:AcceptOsGrants = false. (server-network-relay.md, 0233-server-issued-real-network-grants.md)
All versions: CHANGELOG.md
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
Kazo OS 3.0.0
What's Changed
- docs : créer le secret HACK_STORE_TOKEN by @werddomain in #348
- Modèle hackeros-solution : le workflow du Hack Store forke le catalogue sans --remote by @werddomain in #353
- fix: Redémarrer active la nouvelle version même depuis une page ouverte par Ctrl+F5 by @werddomain in #352
- fix: an app-sources.config without [catalogs] gets the host's catalogs by @werddomain in #354
- fix: le démarrage réessaie tout seul après une erreur du serveur (503 après un déploiement) by @werddomain in #355
- fix: serve installed apps' files after a Ctrl+F5 and keep another tab's app (ADR 0225) by @werddomain in #356
- Mot de passe oublié : réinitialiser l'OS depuis l'écran de connexion (ADR 0226) by @werddomain in #357
- La réinitialisation efface tout ce que HackerOS garde dans le navigateur (ADR 0227) by @werddomain in #358
- docs: contributing guide for HackerOS and feature request steps by @werddomain in #359
- docs: ADR 0228, HackerOS devient KazoOS by @werddomain in #360
- feat: Cloudflare Worker redirecting hackos.kazo.ca to os.kazo.ca by @werddomain in #362
- feat: afficher le nom KazoOS au lieu de HackerOS by @werddomain in #361
- rename: add the KazoOS social preview image by @werddomain in #363
- feat: afficher « Kazo OS » avec une espace ; ADR 0229 by @werddomain in #364
- docs: badges et activité du dépôt dans les README by @werddomain in #365
- rename/3+4: Kazo.Os.* packages and namespaces, Kazo* types, SDK 3.0.0 by @werddomain in #366
- rename/6a: ADR 0230, rename migration based on the previous version by @werddomain in #368
- rename/5: system and stored names (commands, extensions, paths, ids, ASP.Kazo, Kazo OS Store) by @werddomain in #367
- rename/6: migrate pre-3.0 stored data to the Kazo OS names (ADR 0230) by @werddomain in #369
- rename/7: serve Kazo OS at os.kazo.ca by @werddomain in #370
- rename/9: HOS short names become KOS (.kosbak, KOSAPP, --kos-*) by @werddomain in #373
- Rename HackerOS to Kazo OS throughout codebase by @werddomain in #372
Full Changelog: v2.2.2...v3.0.0
HackerOS 2.2.2
Improved
- Hack Store apps are signed. HackerOS now checks the signature of every app from the official Hack Store and refuses a package that was not signed by the catalog or was changed after. (app-installation.md)
All versions: CHANGELOG.md
HackerOS 2.2.1
New
- Set as wallpaper from the menu of an image. Right-click a PNG, JPEG or WebP image and choose Set as wallpaper: it becomes the desktop background at once, without opening Settings. With several screens, a submenu chooses the screen. (#330, 0218-set-as-wallpaper-file-menu.md, wallpapers.md)
- Do not disturb. A Do not disturb switch in the clock panel (the shade on a phone) and in Settings ▸ Notifications stops the notification bubbles and sounds, errors included. Notifications still go to the clock panel and the unread dot still shows them. A moon in the notification area says the mode is on; the choice is saved for each user in ~/.config/hackeros/notifications.config. (0216-do-not-disturb.md)
- Mouse Back and Forward buttons in apps. The mouse Back button, Alt+← and the phone's Back (Android button or gesture, iOS swipe) now go to the active app instead of moving the browser tab back and leaving HackerOS; the mouse Forward button and Alt+→ go forward. On a phone, Back follows the ◁ button. Apps receive them through IAppBackHandler and the new IAppForwardHandler, with the new MouseButton and SystemBack sources. (0220-mouse-back-forward-buttons.md)
- Wallpaper on the mobile home screen. The mobile home screen can show an image too. In Settings ▸ Appearance ▸ Wallpaper, pick « Mobile », then an image and how it fits; the desktop keeps its own choice. Without an image, the mobile theme's background stays. (0217-mobile-home-wallpaper.md)
Improved
- Frosted glass app drawer on the iOS theme. On the iOS mobile theme, the app drawer is now the same frosted glass as the notification shade, so the wallpaper shows through. Other themes keep an opaque drawer; a theme can choose with --hos-mobile-drawer-background and --hos-mobile-drawer-backdrop-filter. (0217-mobile-home-wallpaper.md)
Fixed
- Installed apps keep their look. An app installed from the Hack Store or with hackpkg now loads its own styles and scripts, and looks the same as an app that comes with HackerOS. (0221-pack-all-static-web-assets-of-an-app.md)
- Installed apps speak your language. An app installed from the Hack Store or with hackpkg now shows its French texts, as an app that comes with HackerOS does. (0222-installed-app-satellite-assemblies.md)
- Restarting to update opens the new version. When a new version of HackerOS is available, it now downloads in the background, and « Restart to update » opens it instead of an older copy kept by the browser. Other open HackerOS tabs restart too, and the Start menu Restart also takes the new version. If the download fails, nothing closes and you are told. (0223-restart-onto-the-new-version.md)
For developers
- App packages carry their satellite assemblies. HackerOsPack puts the satellite assemblies of the app's own assemblies in the package at lib//.resources.dll; the OS checks them and loads them before the app's first render. (0222-installed-app-satellite-assemblies.md)
- HackerOsPack packs every static resource of an app. The package now holds the whole wwwroot/, the collocated .razor.js files and the scoped CSS bundle, declared in the package's manifest with their SHA-256; the publish workflow of the hackeros-solution template copies that manifest into the catalog folder. (0221-pack-all-static-web-assets-of-an-app.md)
- Signing tool for app authors. dotnet build -t:HackerOsKeyGen creates an author's signing key, HackerOsPack signs each package with the HACKEROS_APP_SIGNING_KEY secret, and the hackeros-solution template publishes the signed packages on the hackeros-packages branch on each version tag. Administrators require an author's signature by adding their public key to [signing-keys]. (0219-app-authors-signing-tool.md)
All versions: CHANGELOG.md
HackerOS 2.2.0
New
- Window animations. Windows now open, close, minimize into their taskbar button, restore, maximize and snap with a short fade and scale. The Reduce motion setting turns the animations off, and a theme can change their duration. (#311, 0198-window-animations.md)
- Notification bubbles. Each new notification from the OS or an app now shows as a bubble for 6 seconds, above the taskbar of the first screen or at the top of a phone screen, then stays in the clock panel. Pointing at a bubble keeps it open. A ready update arrives the same way, with its Restart to update button. (#309, 0197-notification-toasts.md)
- Installable local server. The HackerOS server installs on your computer as a service on Windows, Linux and macOS, or as a Docker image, from the archives attached to each release. It listens on this computer only, or also on the local network over HTTPS with a local certificate authority. Settings > Server connection > Local server lists the downloads, tests an address and pairs this device with a one-time code; apps get HackServerConnection.PairAsync and TestAsync. (#308, 0191-installable-local-server.md, installable-server.md)
- Real sites in the browser through the HackerOS server. With a HackerOS server connected, the Browser opens real web sites through its proxy and stays signed in to them (cookies and redirects are kept). An icon at the start of the address bar tells where the page came from, and http pages say Not secure. Apps get HackHttpResponse.Source and the TimedOut and BlockedByAdministrator network errors. (#305, 0210-browser-real-sites-through-the-proxy.md)
- System sounds. The OS plays a sound for notifications, warnings, errors, sign-in and sign-out. Choose the sound theme (HackerOS or Soft), the volume or turn the sounds off in Settings > Sound. Add your own theme in ~/.local/share/sounds (freedesktop.org format, OGG or MP3). (#304, 0204-os-event-sounds.md, system-sounds.md)
- Open a .zip as a folder. A double click on a .zip file in the File Explorer opens it as a read-only folder, with its path in the address bar. A file opened from the archive is extracted to /tmp first. Dragging or pasting items out of the archive extracts them; renaming, deleting or adding inside it is refused. Double-clicking a .zip on the desktop opens it in the File Explorer. (#302, 0185-file-explorer-improvements.md, file-explorer.md)
- Taskbar window previews. Hovering a window's taskbar button shows a small live copy of the window, with a button to close it. Click the preview to bring the window to the front. Rest the pointer on it to see that window alone: the other windows of the screen keep only their outline. (#300, 0199-taskbar-window-previews.md)
- Taskbar context menus. A right click on a window's taskbar button gives New window and the window menu with Other screen. A right click on the rest of the taskbar gives Task manager, Show the desktop, Cascade windows, Tile windows and Taskbar settings, for the windows of that screen. (#289, 0194-taskbar-context-menus.md)
- Start as a guest, then create your account. On a new installation, Start as a Guest opens the desktop without an account. Create my account (sign-in screen, Settings ▸ Users or the Start menu) then makes it a real account with a password, keeping the guest's files or starting over. (#286, 0187-guest-start-and-sign-in-credits.md, guest-account.md)
- The clock shows your local time. The clock, the date command, ls -l and the apps now use your time zone: the device's by default, or one chosen in Settings > Date and time. Apps read it with HackTimeZone and IAppExecutionContext.TimeZone. (#283, 0193-local-time-and-time-zone.md)
- Compress, Download, Copy path and Send to. The File Explorer file menu can compress items, download them, copy their path and send them to another place. (#275, 0185-file-explorer-improvements.md)
- Drag files out of the browser to download them. Drag items from File Explorer to your computer to download them; several items arrive as a .zip. (#275, 0185-file-explorer-improvements.md)
- Credits on the sign-in screen. The sign-in screens and Settings ▸ About show the author and a link to the GitHub project. (#262, 0187-guest-start-and-sign-in-credits.md)
- A taskbar on every screen and an "Other screen" menu. Each screen can have its own taskbar. The window icon and the Maximize button offer to send a window to another screen, and a shortcut identifies each screen. (#238, 0179-per-screen-taskbars-and-other-screen-menus.md)
- Drag a window to another screen. Drag a window by its title bar onto another screen; an outline shows where it will land. (#238, 0183-drag-a-window-between-screens.md)
- Install apps from GitHub with hackpkg. The hackpkg command installs, updates and removes an app from its GitHub repository. App authors build the .hackapp package with HackerOsPack. (#238, 0182-install-apps-from-github.md)
- Mount a computer folder as a network drive. In Chrome and Edge, a folder of your computer can be mounted under /mnt and used like any other drive, with the mount and umount commands. (#238, 0181-host-folder-mounted-as-a-network-drive.md)
- Settings ▸ Screens. A new Settings page lists your screens, opens or closes them, restores them after a restart and remembers where each one goes. (#238, 0180-screen-service-placement-and-memory.md)
- Use several screens. Extend HackerOS to other monitors: each screen gets its own desktop, and windows move from one screen to another. (#238, 0178-extended-screens-in-display-surfaces.md)
- New Folder button in folder dialogs. The Choose folder and Save dialogs have a New Folder button, also used by Open Folder in Code Editor. (#218, 0175-new-folder-in-the-choose-folder-dialog.md)
- Cursor themes. Settings ▸ Appearance ▸ Cursors changes the pointer of the whole OS: System (the device's cursors), HackerOS Neon, Gothic Crimson, or your own theme, a folder of PNG cursors with their hot spot in ~/.config/hackeros/cursors/ or /etc/hackeros/cursors/. Apps need no change. (0205-cursor-themes.md, cursor-themes.md)
- Hack Store: apps open without a restart, signed packages, safe installs. An app installed or updated opens at once when it was not already loaded. Packages from a source with a signing key are verified before install. Installs are transactional: an interrup...
HackerOS 2.1.0
What's Changed
- HackerOS 2.1.0 et annonce d'une nouvelle version aux sessions ouvertes (ADR 0174) by @werddomain in #217
Full Changelog: v2.0.3...v2.1.0
HackerOS 2.0.3
What's Changed
- Add MultiMonitorManager by @werddomain in #1
- Add basic kernel and shell by @werddomain in #4
- Add network emulation services by @werddomain in #5
- Add executable processes and system launcher by @werddomain in #6
- Initialize persistent filesystem with AutoRun service by @werddomain in #7
- Add basic Blazor window component by @werddomain in #8
- Improve taskbar tracking and remove build artifacts by @werddomain in #9
- Add webassembly terminal window by @werddomain in #10
- Enable CSS isolation in wasm components by @werddomain in #11
- Add minimal MVC framework to Blazor WASM by @werddomain in #12
- Refactor process hierarchy with command base by @werddomain in #13
- Add basic linux command implementations by @werddomain in #14
- Add basic implementations for Blazor apps by @werddomain in #15
- Add placeholder websites for wasm project by @werddomain in #16
- Implement linux command arguments in wasm by @werddomain in #17
- Add initial website pages by @werddomain in #18
- Add Blazor File Explorer by @werddomain in #19
- Add basic dialog system by @werddomain in #20
- Replace JS prompts with Blazor dialogs by @werddomain in #21
- Add simple VS Code-like editor layout by @werddomain in #22
- Add full WebBrowser app by @werddomain in #23
- Add BlazorMonaco editor by @werddomain in #24
- Add desktop and shared file list by @werddomain in #25
- Add icon helper for wasm by @werddomain in #26
- Add basic file type handling service by @werddomain in #27
- Add start menu to Blazor WASM by @werddomain in #28
- Add authentication and login screens by @werddomain in #29
- Enable MudBlazor and icon fonts by @werddomain in #30
- Add folder workspace and multi-terminal support by @werddomain in #31
- Replace localStorage with IndexedDB in Blazor wasm by @werddomain in #32
- Improve calculator by @werddomain in #33
- Add HackPaint editor skeleton by @werddomain in #34
- Enhance HackPaint image editor by @werddomain in #35
- Add Open With submenu in File Explorer by @werddomain in #36
- Add upload/download and zip features to WASM by @werddomain in #37
- Add HackPaint app skeleton by @werddomain in #38
- Add save and rotate features to HackPaint by @werddomain in #39
- Add basic MudBlazor System Monitor by @werddomain in #40
- Add zip folder menu and view zip contents by @werddomain in #41
- Add advanced SystemMonitor features by @werddomain in #42
- Add Wasm GitHub Pages workflow by @werddomain in #43
- Wasm by @werddomain in #44
- Add Settings service and GUI by @werddomain in #45
- Add WordPad editor app by @werddomain in #46
- Implement Notepad application by @werddomain in #47
- Add MudBlazor theme support by @werddomain in #48
- Fix IndexedDB reopen issue by @werddomain in #49
- Fix DatabaseService version check by @werddomain in #50
- Improve login UI style by @werddomain in #51
- Add configurable session persistence by @werddomain in #52
- Fix shell command VFS integration by @werddomain in #54
- Fix missing methods in HackerOS by @werddomain in #55
- Fix build errors in HackerOS by @werddomain in #56
- Fix compile-time issues by @werddomain in #57
- Fix compilation issues in HackerOs by @werddomain in #58
- Fix compilation issues in HackerOs by @werddomain in #59
- Fix UI event handlers by @werddomain in #60
- Fix compile issues by @werddomain in #61
- Fix path utils and DNS file access by @werddomain in #62
- Fix path utils and DNS file access by @werddomain in #63
- Fix compile issues in HackerOS modules by @werddomain in #64
- Fix namespaces and event args by @werddomain in #65
- Fix compile errors in HackerOS by @werddomain in #66
- Fix build issues in HackerOs project by @werddomain in #67
- Fix compile issues in settings and file open by @werddomain in #68
- Fix interface method and router constant by @werddomain in #69
- Bug fixes for settings and window creation by @werddomain in #70
- Partial fixes for HackerOs compilation by @werddomain in #71
- Fix token conversion and namespace issues by @werddomain in #72
- Fix HackerOs compilation by correcting namespace uses by @werddomain in #73
- Wasm2 Comit by @werddomain in #74
- Add simplified Window component for declarative window creation by @werddomain with @Copilot in #75
- Extract window runtime into HackerOs.Windowing.Core by @werddomain in #79
- Wasm total conversion by @werddomain in #78
- Add reusable FileView control, topic messaging, and directory file association by @werddomain in #80
- Fix app.css single-source resolution; resolve regressions from main merge by @werddomain in #81
- Document common pitfalls from static-asset, manifest, and E2E harness fixes by @werddomain in #82
- Fix accessibility violations found by AccessibilityAndVisualCoverageTests by @werddomain in #83
- Fix PWA E2E file-save flow: dropped FileView selection + row class regressions by @werddomain in #84
- Add shared theming and Windows 7 launcher by @werddomain in #85
- Add HackerOS ecosystem rebuild plan and reorganize docs by @werddomain in #86
- Phase 1: virtual /proc and /dev filesystems (ADR 0046) by @werddomain in #87
- Phase 1: write platform logs as files under /var/log (ADR 0045) by @werddomain in #88
- Phase 1 (5.1) : API fichier Hack* et contexte d'exécution ambiant by @werddomain in #89
- Settings as real files with layering, locks and a typed HackSettings API (plan 5.2) by @werddomain in #90
- docs(adr): ADR de la phase 2 (0047 à 0049) by @werddomain in #91
- Phase 2 : migration des 43 apps vers [AppManifest] (ADR 0047 §6) by @werddomain in #92
- Phase 2 : classement des capacités (ADR 0049) by @werddomain in #93
- Désinstallation des apps par apps.config (ADR 0048, chantier app-uninstall) by @werddomain in #94
- Approve dangerous capabilities at launch (ADR 0049, dangerous-approval) by @werddomain in #95
- docs(adr): ADR de la phase 3 — shell, commandes et corbeille (0050-0052) by @werddomain in #96
- Phase 3 : regroupement des commandes dans HackerOs.Commands (ADR 0051 §1) by @werddomain in #97
- Phase 3 : environnement par processus (ADR 0050 §5-6, ADR 0053) by @werddomain in #98
- Phase 3 : corbeille freedesktop, HackTrash, rm vers la corbeille, commande trash (ADR 0052) by @werddomain in #99
- Phase 3 : interpréteur du shell hsh (tubes, redirect...