Merge branch 'docs/pointing-client-remote-server' of https://github.com/janhq/jan into docs/pointing-client-remote-server
This commit is contained in:
commit
f18effab2f
@ -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) {
|
||||
|
||||
@ -84,7 +84,7 @@ export function persistExtensions() {
|
||||
writeFileSync(
|
||||
ExtensionManager.instance.getExtensionsFile(),
|
||||
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`.
|
||||
|
||||
> 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
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user