ci: apply prettier to all files (#9356)

Resolves: #8940
This commit is contained in:
Thomas Eizinger
2025-06-02 19:12:54 +08:00
committed by GitHub
parent 3ad7848e8f
commit b7b296a102
19 changed files with 100 additions and 81 deletions

View File

@@ -7,9 +7,9 @@ repos:
entry: codespell
language: system
pass_filenames: false
- id: prettier-git-files
name: Prettier (only git-tracked files)
entry: bash -c 'git grep --cached -z -l '' | xargs -0 prettier --check --ignore-unknown'
- id: prettier
name: Prettier
entry: prettier --check --ignore-unknown .
language: system
pass_filenames: false

View File

@@ -2,8 +2,9 @@ elixir/_build
elixir/deps
elixir/apps/web/assets
rust/target
kotlin/android/build
kotlin/android/app/build
website/node_modules
website/.next
**/*.sh
**/*.ex
**/*.rs

View File

@@ -94,7 +94,11 @@ export default function App() {
</NavLink>
<NavLink to="/diagnostics">
{({ isActive }) => (
<SidebarItem active={isActive} icon={DocumentMagnifyingGlassIcon} as="div">
<SidebarItem
active={isActive}
icon={DocumentMagnifyingGlassIcon}
as="div"
>
Diagnostics
</SidebarItem>
)}

View File

@@ -32,18 +32,12 @@ export default function Diagnostics({
</div>
<div className="mt-8 flex justify-center gap-4">
<Button
onClick={exportLogs}
color="alternative"
>
<Button onClick={exportLogs} color="alternative">
<ShareIcon className="mr-2 h-5 w-5" />
Export Logs
</Button>
<Button
onClick={clearLogs}
color="alternative"
>
<Button onClick={clearLogs} color="alternative">
<TrashIcon className="mr-2 h-5 w-5" />
Clear Logs
</Button>

View File

@@ -1,5 +1,11 @@
import React, { useEffect, useState } from "react";
import { Button, TextInput, Label, TextInputProps, Tooltip } from "flowbite-react";
import {
Button,
TextInput,
Label,
TextInputProps,
Tooltip,
} from "flowbite-react";
import { AdvancedSettingsViewModel as Settings } from "../generated/AdvancedSettingsViewModel";
interface SettingsPageProps {
@@ -45,9 +51,9 @@ export default function SettingsPage({
</div>
<p className="text-neutral-900 mb-6">
<strong>WARNING</strong>: These settings are intended for internal
debug purposes <strong>only</strong>. Changing these is not supported
and will disrupt access to your resources.
<strong>WARNING</strong>: These settings are intended for internal debug
purposes <strong>only</strong>. Changing these is not supported and will
disrupt access to your resources.
</p>
<form
@@ -58,7 +64,9 @@ export default function SettingsPage({
className="max-w mx-auto flex flex-col gap-2"
>
<div>
<Label className="text-neutral-600" htmlFor="auth-base-url-input">Auth Base URL</Label>
<Label className="text-neutral-600" htmlFor="auth-base-url-input">
Auth Base URL
</Label>
<ManagedTextInput
name="auth_base_url"
id="auth-base-url-input"
@@ -75,7 +83,9 @@ export default function SettingsPage({
</div>
<div>
<Label className="text-neutral-600" htmlFor="api-url-input">API URL</Label>
<Label className="text-neutral-600" htmlFor="api-url-input">
API URL
</Label>
<ManagedTextInput
name="api_url"
id="api-url-input"
@@ -92,7 +102,9 @@ export default function SettingsPage({
</div>
<div>
<Label className="text-neutral-600" htmlFor="log-filter-input">Log Filter</Label>
<Label className="text-neutral-600" htmlFor="log-filter-input">
Log Filter
</Label>
<ManagedTextInput
name="log_filter"
id="log-filter-input"
@@ -109,11 +121,7 @@ export default function SettingsPage({
</div>
<div className="flex justify-end gap-4 mt-4">
<Button
type="reset"
onClick={resetSettings}
color="alternative"
>
<Button type="reset" onClick={resetSettings} color="alternative">
Reset to Defaults
</Button>
<Button type="submit">Apply</Button>
@@ -127,10 +135,15 @@ function ManagedTextInput(props: TextInputProps & { managed: boolean }) {
let { managed, ...inputProps } = props;
if (managed) {
return <Tooltip content="This setting is managed by your organisation." clearTheme={{target: true}}>
<TextInput {...inputProps} disabled={true} />
</Tooltip>
return (
<Tooltip
content="This setting is managed by your organisation."
clearTheme={{ target: true }}
>
<TextInput {...inputProps} disabled={true} />
</Tooltip>
);
} else {
return <TextInput {...inputProps} />
return <TextInput {...inputProps} />;
}
}

View File

@@ -1,8 +1,8 @@
export interface AdvancedSettingsViewModel {
auth_url: string;
auth_url_is_managed: boolean;
api_url: string;
api_url_is_managed: boolean;
log_filter: string;
log_filter_is_managed: boolean;
auth_url: string;
auth_url_is_managed: boolean;
api_url: string;
api_url_is_managed: boolean;
log_filter: string;
log_filter_is_managed: boolean;
}

View File

@@ -1,4 +1,4 @@
export interface FileCount {
bytes: number;
files: number;
bytes: number;
files: number;
}

View File

@@ -1,4 +1,4 @@
export interface Session {
account_slug: string;
actor_name: string;
account_slug: string;
actor_name: string;
}

View File

@@ -1,5 +1,5 @@
import * as Sentry from "@sentry/react";
import type { Client } from '@sentry/core';
import type { Client } from "@sentry/core";
type Environment = "production" | "staging" | "on-prem" | "unknown";
@@ -22,14 +22,14 @@ export default function initSentry(apiUrl: string) {
release: `gui-client@${__APP_VERSION__}`,
};
console.log("Initialising Sentry", { options })
console.log("Initialising Sentry", { options });
client = Sentry.init(options);
}
function environment(url: URL | null): Environment {
if (!url) {
return "unknown"
return "unknown";
}
switch (url.host) {

View File

@@ -7,23 +7,24 @@ import * as Sentry from "@sentry/react";
const customTheme = createTheme({
sidebar: {
root: { inner: "rounded-none bg-white" }
root: { inner: "rounded-none bg-white" },
},
button: {
color: {
default: "bg-accent-450 hover:bg-accent-700 text-white",
alternative: "text-neutral-900 border border-neutral-200 hover:bg-neutral-300 hover:text-neutral-900",
alternative:
"text-neutral-900 border border-neutral-200 hover:bg-neutral-300 hover:text-neutral-900",
},
},
textInput: {
field: {
input: {
colors: {
gray: "focus:ring-accent-500 focus:border-accent-500"
}
}
}
}
gray: "focus:ring-accent-500 focus:border-accent-500",
},
},
},
},
});
ReactDOM.createRoot(document.getElementById("root") as HTMLElement, {

View File

@@ -2,12 +2,12 @@ import tailwindcss from "@tailwindcss/vite";
import react from "@vitejs/plugin-react";
import { defineConfig } from "vite";
import flowbiteReact from "flowbite-react/plugin/vite";
import typescript from 'vite-plugin-typescript';
import typescript from "vite-plugin-typescript";
import { execSync } from "child_process";
const host = process.env.TAURI_DEV_HOST;
const gitVersion = process.env.GITHUB_SHA ?? execSync('git rev-parse --short HEAD')
.toString();
const gitVersion =
process.env.GITHUB_SHA ?? execSync("git rev-parse --short HEAD").toString();
// https://vite.dev/config/
export default defineConfig({
@@ -15,8 +15,8 @@ export default defineConfig({
define: {
// mark:next-gui-version
'__APP_VERSION__': JSON.stringify("1.5.0"),
'__GIT_VERSION__': JSON.stringify(gitVersion),
__APP_VERSION__: JSON.stringify("1.5.0"),
__GIT_VERSION__: JSON.stringify(gitVersion),
},
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`

View File

@@ -265,10 +265,10 @@ Application certificates are **precious** and we only have a limited number of
them. They also cannot be revoked. So do not generate them. Instead, obtain it
from 1Password.
Also, the signing certificate for the package installer artifact specifically needs
to be a `Developer ID Installer` certificate, not a `Developer ID Application` or
`Apple Distribution` certificate. This is needed to sign the PKG files we distribute
that are consumed by MDMs.
Also, the signing certificate for the package installer artifact specifically
needs to be a `Developer ID Installer` certificate, not a
`Developer ID Application` or `Apple Distribution` certificate. This is needed
to sign the PKG files we distribute that are consumed by MDMs.
Once you've done that, you can create the provisioning profiles and update the
GitHub secrets using the same steps as above, only using the following secrets

View File

@@ -1,7 +1,9 @@
# Windows policy templates
These policy templates can be imported into Intune here: https://intune.microsoft.com/#view/Microsoft_Intune_DeviceSettings/DevicesWindowsMenu/~/configuration
These policy templates can be imported into Intune here:
https://intune.microsoft.com/#view/Microsoft_Intune_DeviceSettings/DevicesWindowsMenu/~/configuration
Intune only allows a single policy template per namespace to be active at any one time.
Therefore, in order to upload (and test) a new template, you need to delete the previous one.
The menu for deleting an uploaded ADMX file is hidden behind the three dots at the end of the row.
Intune only allows a single policy template per namespace to be active at any
one time. Therefore, in order to upload (and test) a new template, you need to
delete the previous one. The menu for deleting an uploaded ADMX file is hidden
behind the three dots at the end of the row.

View File

@@ -15,7 +15,7 @@ by advanced users and admins.
| Component | Log directory |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| macOS Client | `~/Library/Group Containers/47R2M6779T.dev.firezone.firezone/Library/Caches/logs` for the GUI process, and `/private/var/root/Library/Group Containers/47R2M6779T.dev.firezone.firezone/Library/Caches/logs` for the tunnel process |
| Windows GUI Client | `%LOCALAPPDATA%\dev.firezone.client\data\logs` for the GUI process, and `%PROGRAMDATA%\dev.firezone.client\data\logs` for the Tunnel service |
| Windows GUI Client | `%LOCALAPPDATA%\dev.firezone.client\data\logs` for the GUI process, and `%PROGRAMDATA%\dev.firezone.client\data\logs` for the Tunnel service |
| Linux GUI Client | `$HOME/.cache/dev.firezone.client/data/logs/` for the GUI process, and `/var/log/dev.firezone.client/` for the tunnel process |
| Android/ChromeOS Client | `/data/data/dev.firezone.android/caches/logs` |
| iOS Client | N/A |

View File

@@ -48,22 +48,23 @@ To auto-start the Client when you log in, run
### Step 1: Install repositories
These are required for both GNOME extensions and the WebKit and other dependencies
of the Firezone Client.
These are required for both GNOME extensions and the WebKit and other
dependencies of the Firezone Client.
1. `sudo dnf config-manager --set-enabled crb`
1. `sudo dnf install epel-release`
### Step 2: Install system tray
GNOME Shell in CentOS does not have a system tray by default. Use these
steps to install it. For other desktops like xfce4 or KDE, the system tray may
already work properly.
GNOME Shell in CentOS does not have a system tray by default. Use these steps to
install it. For other desktops like xfce4 or KDE, the system tray may already
work properly.
1. `sudo dnf install gnome-shell-extension-appindicator`
1. Log out and back in to restart GNOME
1. `gnome-extensions enable appindicatorsupport@rgcjonas.gmail.com`
1. Optionally: To manage GNOME extensions via a GUI, install `gnome-extensions-app`
1. Optionally: To manage GNOME extensions via a GUI, install
`gnome-extensions-app`
### Step 3: Install Firezone
@@ -155,9 +156,9 @@ To export or clear your logs:
1. Click `Diagnostic Logs`.
1. Click `Export Logs` or `Clear Log Directory`.
The Tunnel service (`firezone-client-tunnel.service`) also logs to stdout which is
captured by systemd and sent to journald. To view the logs of the Tunnel service,
use:
The Tunnel service (`firezone-client-tunnel.service`) also logs to stdout which
is captured by systemd and sent to journald. To view the logs of the Tunnel
service, use:
```bash
journalctl --pager-end --follow --unit firezone-client-tunnel.service

View File

@@ -205,8 +205,9 @@ Get-DnsClientNrptRule | where Comment -eq firezone-fd0020211111 | foreach { Remo
The Firezone Client is split into 2 main processes: A Tunnel service which runs
the tunnel, and a GUI which allows the user to control Firezone.
- Tunnel service logs are stored at `%PROGRAMDATA%\dev.firezone.client\data\logs\`,
where `%PROGRAMDATA%` is almost always `C:\ProgramData`
- Tunnel service logs are stored at
`%PROGRAMDATA%\dev.firezone.client\data\logs\`, where `%PROGRAMDATA%` is
almost always `C:\ProgramData`
- GUI logs are stored at `%LOCALAPPDATA%\dev.firezone.client\data\logs`, where
`%LOCALAPPDATA%` is, e.g. `C:\Users\username\AppData\Local`

View File

@@ -136,6 +136,7 @@ to 10 MB. However, the actual size of the receive buffer is limited by the
`net.core.rmem_max` kernel parameter. For the increased buffer size to take
effect, you may need to increase the `net.core.rmem_max` parameter on the
Gateway's host system.
## Deploy a single Gateway
Deploying a single Gateway can be accomplished in the admin portal.

View File

@@ -208,8 +208,8 @@ export default function Gateway() {
</Entry>
<Entry version="1.1.4" date={new Date("2024-08-08")}>
<li className="pl-2">
Removes <code>FIREZONE_ENABLE_MASQUERADE</code> env variable. Masquerading is now
always enabled unconditionally.
Removes <code>FIREZONE_ENABLE_MASQUERADE</code> env variable.
Masquerading is now always enabled unconditionally.
</li>
</Entry>
<Entry version="1.1.3" date={new Date("2024-08-02")}>

View File

@@ -10,11 +10,12 @@ export default function HubspotForm({
formId: string;
title?: string;
}) {
const { isScriptLoaded, isScriptError, scriptError, isFormCreated } = useHubspotForm({
portalId: portalId,
formId: formId,
target: "#hubspot-form",
});
const { isScriptLoaded, isScriptError, scriptError, isFormCreated } =
useHubspotForm({
portalId: portalId,
formId: formId,
target: "#hubspot-form",
});
return (
<div className="bg-white shadow-md border border-neutral-200 rounded p-4">