Merge branch 'docs/pointing-client-remote-server' of https://github.com/janhq/jan into docs/pointing-client-remote-server

This commit is contained in:
Ho Duc Hieu 2024-01-03 21:16:51 +07:00
commit f18effab2f
4 changed files with 28 additions and 20 deletions

View File

@ -47,7 +47,7 @@ export class ExtensionManager {
const extensionsJson = join(extDir, "extensions.json");
if (!existsSync(extensionsJson))
writeFileSync(extensionsJson, "{}", "utf8");
writeFileSync(extensionsJson, "{}", "utf-8");
this.extensionsPath = extDir;
} catch (error) {

View File

@ -84,7 +84,7 @@ export function persistExtensions() {
writeFileSync(
ExtensionManager.instance.getExtensionsFile(),
JSON.stringify(persistData),
"utf8"
"utf-8"
);
}

View File

@ -6,41 +6,49 @@ We use the [Jan Monorepo Project](https://github.com/orgs/janhq/projects/5) in G
As much as possible, everyone owns their respective `epics` and `tasks`.
> We aim for a `loosely coupled, but tightly aligned` autonomous culture.
:::tip
We aim for a `loosely coupled, but tightly aligned` autonomous culture.
:::
## Quicklinks
- [High-level roadmap](https://github.com/orgs/janhq/projects/5/views/16): view used at at strategic level, for team wide alignment. Start & end dates reflect engineering implementation cycles. Typically product & design work preceeds these timelines.
- [Standup Kanban](https://github.com/orgs/janhq/projects/5/views/25): view used during daily standup. Sprints should be up to date.
## Organization
[`Project Labels`](https://github.com/janhq/jan/issues/labels)
[`Roadmap Labels`](https://github.com/janhq/jan/labels?q=roadmap)
- `Project Labels` tag large, long-term, & strategic projects that can span multiple teams and multiple sprints
- Example label: `project: Jan has Mobile`
- `Projects` contain `epics`
- `Roadmap Labels` tag large, long-term, & strategic projects that can span multiple teams and multiple sprints
- Example label: `roadmap: Jan has Mobile`
- `Roadmaps` contain `epics`
[`Epics`](https://github.com/janhq/jan/issues?q=is%3Aissue+is%3Aopen+label%3A%22type%3A+epic%22)
- `Epics` track large stories that span 1-2 weeks, and it outlines specs, architecture decisions, designs
- Each `epic` corresponds with a `milestone`
- `Epics` contain `tasks`
- `Epics` should always have 1 owner
[`Milestones`](https://github.com/janhq/jan/milestones)
- `Milestones` correspond 1:1 to `epics` and are used to filter [Roadmap Views](https://github.com/orgs/janhq/projects/5/views/16)
- `Milestones` span 1-2 weeks and have deadlines
- `Milestones` track release versions. We use [semantic versioning](https://semver.org/)
- `Milestones` span ~2 weeks and have deadlines
- `Milestones` usually fit within 2 week sprint cycles
[`Tasks`](https://github.com/janhq/jan/issues)
- Tasks are individual issues (feats, bugs, chores) that can be completed within a few days
- Tasks under `In-progress` and `Todo` should always belong to a `milestone`
- Tasks, except for critical bugs, should always belong to an `epic` (and thus fit into our roadmap)
- Tasks are usually named per [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary)
- Tasks should always have 1 owner
We aim to always work on `tasks` that belong to a `milestones`.
We aim to always sprint on `tasks` that are a part of the [current roadmap](https://github.com/orgs/janhq/projects/5/views/16).
## Task Status
## Kanban
- `triaged`: issues that have been assigned
- `todo`: issues you plan to tackle within this week
- `no status`: issues that need to be triaged (needs an owner, ETA)
- `icebox`: issues you don't plan to tackle yet
- `planned`: issues you plan to tackle this week
- `in-progress`: in progress
- `in-review`: pending PR or blocked by something
- `done`: done

View File

@ -61,7 +61,7 @@ async function updateNvidiaDriverInfo(): Promise<void> {
(error, stdout) => {
let data;
try {
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
} catch (error) {
data = DEFALT_SETTINGS;
}
@ -109,7 +109,7 @@ function updateCudaExistence() {
let data;
try {
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
} catch (error) {
data = DEFALT_SETTINGS;
}
@ -127,7 +127,7 @@ async function updateGpuInfo(): Promise<void> {
(error, stdout) => {
let data;
try {
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
} catch (error) {
data = DEFALT_SETTINGS;
}
@ -376,7 +376,7 @@ function spawnNitroProcess(nitroResourceProbe: any): Promise<any> {
let cudaVisibleDevices = "";
let binaryName;
if (process.platform === "win32") {
let nvida_info = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
let nvida_info = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
if (nvida_info["run_mode"] === "cpu") {
binaryFolder = path.join(binaryFolder, "win-cpu");
} else {
@ -392,7 +392,7 @@ function spawnNitroProcess(nitroResourceProbe: any): Promise<any> {
}
binaryName = "nitro";
} else {
let nvida_info = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
let nvida_info = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
if (nvida_info["run_mode"] === "cpu") {
binaryFolder = path.join(binaryFolder, "linux-cpu");
} else {