Merge branch 'main' into docs/pointing-client-remote-server
This commit is contained in:
commit
21f10c4609
@ -47,7 +47,7 @@ export class ExtensionManager {
|
|||||||
|
|
||||||
const extensionsJson = join(extDir, "extensions.json");
|
const extensionsJson = join(extDir, "extensions.json");
|
||||||
if (!existsSync(extensionsJson))
|
if (!existsSync(extensionsJson))
|
||||||
writeFileSync(extensionsJson, "{}", "utf8");
|
writeFileSync(extensionsJson, "{}", "utf-8");
|
||||||
|
|
||||||
this.extensionsPath = extDir;
|
this.extensionsPath = extDir;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@ -84,7 +84,7 @@ export function persistExtensions() {
|
|||||||
writeFileSync(
|
writeFileSync(
|
||||||
ExtensionManager.instance.getExtensionsFile(),
|
ExtensionManager.instance.getExtensionsFile(),
|
||||||
JSON.stringify(persistData),
|
JSON.stringify(persistData),
|
||||||
"utf8"
|
"utf-8"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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`.
|
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
|
## 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
|
- `Roadmap Labels` tag large, long-term, & strategic projects that can span multiple teams and multiple sprints
|
||||||
- Example label: `project: Jan has Mobile`
|
- Example label: `roadmap: Jan has Mobile`
|
||||||
- `Projects` contain `epics`
|
- `Roadmaps` contain `epics`
|
||||||
|
|
||||||
[`Epics`](https://github.com/janhq/jan/issues?q=is%3Aissue+is%3Aopen+label%3A%22type%3A+epic%22)
|
[`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
|
- `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` contain `tasks`
|
||||||
- `Epics` should always have 1 owner
|
- `Epics` should always have 1 owner
|
||||||
|
|
||||||
[`Milestones`](https://github.com/janhq/jan/milestones)
|
[`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` track release versions. We use [semantic versioning](https://semver.org/)
|
||||||
- `Milestones` span 1-2 weeks and have deadlines
|
- `Milestones` span ~2 weeks and have deadlines
|
||||||
|
- `Milestones` usually fit within 2 week sprint cycles
|
||||||
|
|
||||||
[`Tasks`](https://github.com/janhq/jan/issues)
|
[`Tasks`](https://github.com/janhq/jan/issues)
|
||||||
|
|
||||||
- Tasks are individual issues (feats, bugs, chores) that can be completed within a few days
|
- 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 are usually named per [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary)
|
||||||
- Tasks should always have 1 owner
|
- 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
|
- `no status`: issues that need to be triaged (needs an owner, ETA)
|
||||||
- `todo`: issues you plan to tackle within this week
|
- `icebox`: issues you don't plan to tackle yet
|
||||||
|
- `planned`: issues you plan to tackle this week
|
||||||
- `in-progress`: in progress
|
- `in-progress`: in progress
|
||||||
- `in-review`: pending PR or blocked by something
|
- `in-review`: pending PR or blocked by something
|
||||||
- `done`: done
|
- `done`: done
|
||||||
|
|||||||
@ -61,7 +61,7 @@ async function updateNvidiaDriverInfo(): Promise<void> {
|
|||||||
(error, stdout) => {
|
(error, stdout) => {
|
||||||
let data;
|
let data;
|
||||||
try {
|
try {
|
||||||
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
|
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
data = DEFALT_SETTINGS;
|
data = DEFALT_SETTINGS;
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ function updateCudaExistence() {
|
|||||||
|
|
||||||
let data;
|
let data;
|
||||||
try {
|
try {
|
||||||
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
|
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
data = DEFALT_SETTINGS;
|
data = DEFALT_SETTINGS;
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ async function updateGpuInfo(): Promise<void> {
|
|||||||
(error, stdout) => {
|
(error, stdout) => {
|
||||||
let data;
|
let data;
|
||||||
try {
|
try {
|
||||||
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf8"));
|
data = JSON.parse(readFileSync(NVIDIA_INFO_FILE, "utf-8"));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
data = DEFALT_SETTINGS;
|
data = DEFALT_SETTINGS;
|
||||||
}
|
}
|
||||||
@ -376,7 +376,7 @@ function spawnNitroProcess(nitroResourceProbe: any): Promise<any> {
|
|||||||
let cudaVisibleDevices = "";
|
let cudaVisibleDevices = "";
|
||||||
let binaryName;
|
let binaryName;
|
||||||
if (process.platform === "win32") {
|
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") {
|
if (nvida_info["run_mode"] === "cpu") {
|
||||||
binaryFolder = path.join(binaryFolder, "win-cpu");
|
binaryFolder = path.join(binaryFolder, "win-cpu");
|
||||||
} else {
|
} else {
|
||||||
@ -392,7 +392,7 @@ function spawnNitroProcess(nitroResourceProbe: any): Promise<any> {
|
|||||||
}
|
}
|
||||||
binaryName = "nitro";
|
binaryName = "nitro";
|
||||||
} else {
|
} 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") {
|
if (nvida_info["run_mode"] === "cpu") {
|
||||||
binaryFolder = path.join(binaryFolder, "linux-cpu");
|
binaryFolder = path.join(binaryFolder, "linux-cpu");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user