Merge branch 'main' into docs/pointing-client-remote-server

This commit is contained in:
Hieu 2024-01-03 21:09:50 +07:00 committed by GitHub
commit 21f10c4609
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 20 deletions

View File

@ -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) {

View File

@ -84,7 +84,7 @@ export function persistExtensions() {
writeFileSync( writeFileSync(
ExtensionManager.instance.getExtensionsFile(), ExtensionManager.instance.getExtensionsFile(),
JSON.stringify(persistData), 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`. 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

View File

@ -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 {