@litfamily/litopencode 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README-Ko-KR.md +150 -115
- package/README.md +147 -116
- package/dist/activation-workflow-prompts.js +1 -1
- package/dist/agents/registry.js +30 -26
- package/dist/cli/args.js +3 -3
- package/dist/cli/host-limits.d.ts +1 -1
- package/dist/cli/host-limits.js +3 -2
- package/dist/cli/install-config.js +2 -2
- package/dist/cli/install-report.js +18 -1
- package/dist/cli/managed-skill-assets.d.ts +1 -1
- package/dist/cli/managed-skill-assets.js +3 -1
- package/dist/cli/model-catalog.d.ts +56 -0
- package/dist/cli/model-catalog.js +78 -17
- package/dist/cli/model-policy.js +7 -6
- package/dist/cli/native-skill-integrity.d.ts +16 -0
- package/dist/cli/native-skill-integrity.js +80 -0
- package/dist/cli/native-skills.d.ts +9 -1
- package/dist/cli/native-skills.js +19 -3
- package/dist/cli/types.d.ts +6 -1
- package/dist/cli.js +8 -7
- package/dist/config-parser.js +3 -2
- package/dist/config.d.ts +1 -1
- package/dist/config.js +13 -12
- package/dist/features.d.ts +17 -1
- package/dist/features.js +10 -0
- package/dist/model-route-policy.d.ts +1 -1
- package/dist/model-route-policy.js +24 -7
- package/dist/skills.d.ts +8 -1
- package/dist/skills.js +8 -0
- package/dist/uiux-visual-catalog.js +5 -5
- package/docs/assets/cover-motion-still.webp +0 -0
- package/docs/assets/cover-motion.webp +0 -0
- package/docs/assets/readme/JetBrainsMono-OFL.txt +93 -0
- package/docs/assets/readme/Lucide-LICENSE.txt +43 -0
- package/docs/assets/readme/ascii-readme.svg +5 -0
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/assets/readme/ignition-film.mp4 +0 -0
- package/docs/assets/readme/ignition-readme.gif +0 -0
- package/docs/assets/readme/litfamily-machines.png +0 -0
- package/docs/assets/readme/lucide-book-open.svg +14 -0
- package/docs/assets/readme/lucide-play.svg +13 -0
- package/docs/assets/readme/lucide-shield-check.svg +14 -0
- package/docs/assets/readme/poster.png +0 -0
- package/docs/migration.md +2 -2
- package/docs/reference-Ko-KR.md +43 -4
- package/docs/reference.md +51 -10
- package/package.json +1 -1
- package/skills/frontend-ui-ux/SKILL.md +25 -31
- package/skills/frontend-ui-ux/references/complete-contract.md +12 -12
- package/skills/frontend-ui-ux/references/default-editorial-pixel.json +19 -0
- package/skills/frontend-ui-ux/references/production.md +15 -0
- package/skills/managed-skill-manifest.json +92 -1
- package/skills/readme-studio/SKILL.md +76 -0
- package/skills/readme-studio/references/decoration-patterns.md +105 -0
- package/skills/readme-studio/references/motion.md +38 -0
- package/skills/readme-studio/references/production.md +13 -0
- package/skills/readme-studio/references/typography.md +16 -0
- package/skills/readme-studio/scripts/check-facts.mjs +28 -0
- package/skills/readme-studio/templates/cover-source.json +1 -0
- package/skills/readme-studio/templates/facts.json +1 -0
- package/skills/readme-studio/templates/hyperframes/index.html +62 -0
- package/skills/readme-studio/templates/hyperframes/index.motion.json +1 -0
- package/skills/readme-studio/templates/hyperframes/package-lock.json +1966 -0
- package/skills/readme-studio/templates/hyperframes/package.json +1 -0
- package/skills/readme-studio/templates/readme-cover-section.md +53 -0
- package/skills/readme-studio/templates/remotion/package-lock.json +3783 -0
- package/skills/readme-studio/templates/remotion/package.json +1 -0
- package/skills/readme-studio/templates/remotion/src/index.tsx +32 -0
- package/skills/readme-studio/templates/typography/files.mjs +46 -0
- package/skills/readme-studio/templates/typography/outline.mjs +47 -0
- package/skills/readme-studio/templates/typography/package-lock.json +133 -0
- package/skills/readme-studio/templates/typography/package.json +1 -0
- package/tools/check-pack-payload.mjs +34 -2
- package/tools/payload-substance-parity.json +4 -3
- package/tools/version-manifests.json +4 -4
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { effectiveAgentConfig } from "./config.js";
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
2
|
+
import { defaultOpenAiRoutes, newGenerationOpenAiModels, openAiModelEfforts, previousGenerationOpenAiModels, stripFastSuffix } from "./cli/model-catalog.js";
|
|
3
|
+
const safeLunaEfforts = new Set(openAiModelEfforts(previousGenerationOpenAiModels.luna));
|
|
4
|
+
const safeTerraEfforts = new Set(openAiModelEfforts(previousGenerationOpenAiModels.terra));
|
|
5
|
+
const safeAstraEfforts = new Set(openAiModelEfforts(defaultOpenAiRoutes.lead.model));
|
|
5
6
|
function dispatchedModel(route) {
|
|
6
7
|
if (route.model === undefined)
|
|
7
8
|
return undefined;
|
|
@@ -12,7 +13,7 @@ function dispatchedModel(route) {
|
|
|
12
13
|
export function unqualifiedModel(dispatchId) {
|
|
13
14
|
const separator = dispatchId.lastIndexOf("/");
|
|
14
15
|
const model = separator === -1 ? dispatchId : dispatchId.slice(separator + 1);
|
|
15
|
-
return
|
|
16
|
+
return stripFastSuffix(model);
|
|
16
17
|
}
|
|
17
18
|
function dispatchedProvider(dispatchId) {
|
|
18
19
|
const separator = dispatchId.indexOf("/");
|
|
@@ -41,7 +42,7 @@ export function diagnoseModelRoutes(routes) {
|
|
|
41
42
|
continue;
|
|
42
43
|
const modelId = unqualifiedModel(model);
|
|
43
44
|
const effort = describedEffort(route);
|
|
44
|
-
if (modelId ===
|
|
45
|
+
if (modelId === newGenerationOpenAiModels.astra) {
|
|
45
46
|
const variantUnsafe = route.variant !== undefined && !safeAstraEfforts.has(route.variant);
|
|
46
47
|
const reasoningUnsafe = route.reasoningEffort !== undefined && !safeAstraEfforts.has(route.reasoningEffort);
|
|
47
48
|
if (variantUnsafe || reasoningUnsafe || (route.variant === undefined && route.reasoningEffort === undefined)) {
|
|
@@ -52,7 +53,19 @@ export function diagnoseModelRoutes(routes) {
|
|
|
52
53
|
}
|
|
53
54
|
continue;
|
|
54
55
|
}
|
|
55
|
-
if (modelId ===
|
|
56
|
+
if (modelId === newGenerationOpenAiModels.sol || modelId === newGenerationOpenAiModels.luna) {
|
|
57
|
+
const supported = new Set(openAiModelEfforts(modelId));
|
|
58
|
+
const variantUnsafe = route.variant !== undefined && !supported.has(route.variant);
|
|
59
|
+
const reasoningUnsafe = route.reasoningEffort !== undefined && !supported.has(route.reasoningEffort);
|
|
60
|
+
if (variantUnsafe || reasoningUnsafe || (route.variant === undefined && route.reasoningEffort === undefined)) {
|
|
61
|
+
diagnostics.push({ agentId, code: "model_effort_unsupported", model, effort });
|
|
62
|
+
}
|
|
63
|
+
if (route.variant !== undefined && route.reasoningEffort !== undefined && route.variant !== route.reasoningEffort) {
|
|
64
|
+
diagnostics.push({ agentId, code: "model_effort_conflict", model, effort });
|
|
65
|
+
}
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (modelId === previousGenerationOpenAiModels.luna) {
|
|
56
69
|
const hasXhigh = route.variant === "xhigh" || route.reasoningEffort === "xhigh";
|
|
57
70
|
if ((route.variant !== undefined && route.variant !== "xhigh" && !safeLunaEfforts.has(route.variant)) ||
|
|
58
71
|
(route.reasoningEffort !== undefined && route.reasoningEffort !== "xhigh" && !safeLunaEfforts.has(route.reasoningEffort)) ||
|
|
@@ -66,7 +79,7 @@ export function diagnoseModelRoutes(routes) {
|
|
|
66
79
|
}
|
|
67
80
|
continue;
|
|
68
81
|
}
|
|
69
|
-
if (modelId !==
|
|
82
|
+
if (modelId !== previousGenerationOpenAiModels.terra)
|
|
70
83
|
continue;
|
|
71
84
|
if ((route.variant !== undefined && !safeTerraEfforts.has(route.variant)) ||
|
|
72
85
|
(route.reasoningEffort !== undefined && !safeTerraEfforts.has(route.reasoningEffort)) ||
|
|
@@ -115,6 +128,10 @@ export class UnsafeModelRouteError extends Error {
|
|
|
115
128
|
return `${diagnostic.agentId}: Astra requires low, medium, high, xhigh, or max (${diagnostic.model}, ${diagnostic.effort})`;
|
|
116
129
|
case "astra_effort_conflict":
|
|
117
130
|
return `${diagnostic.agentId}: Astra effort fields conflict (${diagnostic.model}, ${diagnostic.effort})`;
|
|
131
|
+
case "model_effort_unsupported":
|
|
132
|
+
return `${diagnostic.agentId}: ${diagnostic.model} accepts a supported catalog effort (${diagnostic.model}, ${diagnostic.effort})`;
|
|
133
|
+
case "model_effort_conflict":
|
|
134
|
+
return `${diagnostic.agentId}: ${diagnostic.model} effort fields conflict (${diagnostic.model}, ${diagnostic.effort})`;
|
|
118
135
|
}
|
|
119
136
|
})
|
|
120
137
|
.join("; ");
|
package/dist/skills.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LitOpenCodeFeatureId } from "./features.ts";
|
|
2
|
-
export type LitOpenCodeRuntimeSkillId = "workflow-loop" | "durable-litgoal" | "agent-roster" | "lit-plan" | "start-work" | "review-work" | "litresearch" | "reference-benchmark-claims" | "native-goal-verdict" | "doctor-installer" | "search-workflow-ideas" | "lit-fetch" | "release-guardrails" | "lit-init" | "lit-crucible" | "refactor" | "lit-burnoff" | "lit-burnoff-file" | "comment-checker" | "lit-code" | "debugging" | "lit-commit" | "lsp" | "lsp-setup" | "rules" | "deep-interview" | "structural-search" | "browser-drive" | "lit-korean" | "lit-recap" | "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization" | "frontend-ui-ux" | "visual-qa" | "autoresearch" | "autoconference" | "wikify";
|
|
2
|
+
export type LitOpenCodeRuntimeSkillId = "workflow-loop" | "durable-litgoal" | "agent-roster" | "lit-plan" | "start-work" | "review-work" | "litresearch" | "reference-benchmark-claims" | "native-goal-verdict" | "doctor-installer" | "search-workflow-ideas" | "lit-fetch" | "release-guardrails" | "lit-init" | "lit-crucible" | "refactor" | "lit-burnoff" | "lit-burnoff-file" | "comment-checker" | "lit-code" | "debugging" | "lit-commit" | "lsp" | "lsp-setup" | "rules" | "deep-interview" | "structural-search" | "browser-drive" | "lit-korean" | "lit-recap" | "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization" | "readme-studio" | "frontend-ui-ux" | "visual-qa" | "autoresearch" | "autoconference" | "wikify";
|
|
3
3
|
export type LitOpenCodeRuntimeSkill = {
|
|
4
4
|
readonly id: LitOpenCodeRuntimeSkillId;
|
|
5
5
|
readonly title: string;
|
|
@@ -282,6 +282,13 @@ export declare const litOpenCodeRuntimeSkills: readonly ({
|
|
|
282
282
|
featureIds: ("planning-start-work-loop" | "litresearch" | "wikify")[];
|
|
283
283
|
discovery: string;
|
|
284
284
|
safety: string[];
|
|
285
|
+
} | {
|
|
286
|
+
id: "readme-studio";
|
|
287
|
+
title: string;
|
|
288
|
+
summary: string;
|
|
289
|
+
featureIds: ("doctor-install" | "readme-studio")[];
|
|
290
|
+
discovery: string;
|
|
291
|
+
safety: string[];
|
|
285
292
|
})[];
|
|
286
293
|
export declare function findLitOpenCodeRuntimeSkill(id: string): LitOpenCodeRuntimeSkill | undefined;
|
|
287
294
|
export declare const litOpenCodeStaticOnlySkills: readonly ({
|
package/dist/skills.js
CHANGED
|
@@ -411,6 +411,14 @@ export const litOpenCodeRuntimeSkills = Object.freeze([
|
|
|
411
411
|
]
|
|
412
412
|
},
|
|
413
413
|
frontendUiUxRuntimeSkill,
|
|
414
|
+
{
|
|
415
|
+
id: "readme-studio",
|
|
416
|
+
title: "README Studio",
|
|
417
|
+
summary: "Build factual READMEs and inspected hybrid covers with local outlined type and pinned motion recipes.",
|
|
418
|
+
featureIds: ["readme-studio", "doctor-install"],
|
|
419
|
+
discovery: "Select readme-studio using OpenCode's native skill tool; install copies its managed resources and doctor verifies them. No slash or automatic chat route is claimed.",
|
|
420
|
+
safety: ["Honor review-only and plan-only requests without edits.", "Probe native image capability; report IMAGE_GENERATION_UNAVAILABLE, then accept a supplied background without claiming generation.", "Verify facts, font licenses, glyph coverage, output boundaries and actual renders; public README rendering remains separately gated."]
|
|
421
|
+
},
|
|
414
422
|
visualQaRuntimeSkill
|
|
415
423
|
]);
|
|
416
424
|
export function findLitOpenCodeRuntimeSkill(id) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const frontendUiUxFeature = {
|
|
2
2
|
id: "frontend-ui-ux",
|
|
3
3
|
title: "Frontend UI/UX",
|
|
4
|
-
summary: "
|
|
4
|
+
summary: "Builds and inspects authorized interfaces using an evolving beta2 contract and offline design intelligence.",
|
|
5
5
|
bindings: [
|
|
6
6
|
{
|
|
7
7
|
kind: "config",
|
|
@@ -75,16 +75,16 @@ export const visualQaFeature = {
|
|
|
75
75
|
export const frontendUiUxRuntimeSkill = {
|
|
76
76
|
id: "frontend-ui-ux",
|
|
77
77
|
title: "Frontend UI/UX",
|
|
78
|
-
summary: "
|
|
78
|
+
summary: "Produce working interfaces and rendered inspection from an authorized brief; evolve the evidence-eligible v1beta2 Design Contract as decisions settle.",
|
|
79
79
|
featureIds: ["frontend-ui-ux", "doctor-install"],
|
|
80
80
|
discovery: "Describe interface work in chat — a making verb aimed at a UI, screen, layout, component, or stylesheet reaches this skill before any file is edited — or select the frontend-ui-ux OpenCode native skill, inspect skills/frontend-ui-ux/SKILL.md, or verify it with litopencode doctor. The post-edit hook also names it when an interface file changes.",
|
|
81
81
|
safety: [
|
|
82
82
|
"Keep retrieval offline, read-only, deterministic, bounded, and honest when no record matches.",
|
|
83
|
-
"
|
|
84
|
-
"
|
|
83
|
+
"Selection does not grant authority; implement only within the user request and OpenCode permissions. Review-only and plan-only stay read-only.",
|
|
84
|
+
"Record a compact finite inventory before coding and evolve the contract through implementation.",
|
|
85
85
|
"Validate the exact canonical manifest before its scanner protection or inert read route; never execute its imported scripts or grant them host authority.",
|
|
86
86
|
"Keep the normalized 34-source/2,277-record dataset unchanged and separate from the byte-preserved canonical library.",
|
|
87
|
-
"
|
|
87
|
+
"Deliver working source, inspected renders and material gaps; keep contract hashes in evidence."
|
|
88
88
|
]
|
|
89
89
|
};
|
|
90
90
|
export const visualQaRuntimeSkill = {
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
https://openfontlicense.org
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Lucide Icons and Contributors
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
The following Lucide icons are derived from the Feather project:
|
|
20
|
+
|
|
21
|
+
airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
|
|
22
|
+
|
|
23
|
+
The MIT License (MIT) (for the icons listed above)
|
|
24
|
+
|
|
25
|
+
Copyright (c) 2013-present Cole Bemis
|
|
26
|
+
|
|
27
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
28
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
29
|
+
in the Software without restriction, including without limitation the rights
|
|
30
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
31
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
32
|
+
furnished to do so, subject to the following conditions:
|
|
33
|
+
|
|
34
|
+
The above copyright notice and this permission notice shall be included in all
|
|
35
|
+
copies or substantial portions of the Software.
|
|
36
|
+
|
|
37
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
38
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
39
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
40
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
41
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
42
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
43
|
+
SOFTWARE.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="804" height="496"
|
|
2
|
+
viewBox="0 0 804 496" role="img" aria-labelledby="title description">
|
|
3
|
+
<title id="title">Exact copyable LIT ASCII mark — centered presentation</title>
|
|
4
|
+
<desc id="description">Original geometric LitFamily ignition symbol, bespoke angular lettering, and ordered vector halftone. Ember orange, signal lime, warm white, and carbon navy. All lettering is outlined; no raster images or external resources.</desc>
|
|
5
|
+
<rect x="0" y="0" width="804" height="496" fill="#080D14" /><g aria-label=" ▄▄▄▄"><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 32) scale(0.020000 -0.020000)"/></g><g aria-label=" ▗███▌ ▗██████▖"><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(252.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 56) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(432.000 56) scale(0.020000 -0.020000)"/></g><g aria-label=" ▗▄▄▄▄▄ ▗▟████▌ ▝██████▘"><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(36.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(48.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(60.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(72.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(84.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(96.000 80) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(228.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 80) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(348.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 80) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(432.000 80) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟██████▌ ▝▀▜█▀▘"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 104) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(204.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 104) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(360.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(372.000 104) scale(0.020000 -0.020000)"/><path d="M300 -300V360H-10V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(408.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(420.000 104) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟███████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 128) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(180.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(288.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(300.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(312.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(420.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(432.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(456.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(468.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(480.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(492.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(504.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(516.000 128) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟█████████████████████████ ▐█▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 152) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(156.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(312.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 152) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(492.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(504.000 152) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(516.000 152) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ████████████████████████████▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(312.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(480.000 176) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(492.000 176) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ██▛▘ ▄ ▄▄▄▄▖▄▄▄▄▄▄▄▄▄▄▄▄▄▖"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(180.000 200) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(192.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(240.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(264.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(276.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(288.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(300.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(312.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(420.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(432.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(456.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(468.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(480.000 200) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▀ ▄██ ████▌█████████████▌"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 224) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(156.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(216.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(312.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(480.000 224) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▄████ ████▌█████████████▌"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(192.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(312.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(480.000 248) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▄█████▛ litopencode"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(168.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(240.000 272) scale(0.020000 -0.020000)"/><path d="M380 0Q307 0 263.5 42.5Q220 85 220 155V648H30V730H310V155Q310 121 329.0 101.5Q348 82 380 82H550V0Z" fill="#F2EFDF" transform="translate(648.000 272) scale(0.020000 -0.020000)"/><path d="M85 0V82H280V468H105V550H370V82H555V0ZM315 649Q282 649 263.0 666.0Q244 683 244 712Q244 742 263.0 759.5Q282 777 315 777Q348 777 367.0 759.5Q386 742 386 712Q386 683 367.0 666.0Q348 649 315 649Z" fill="#F2EFDF" transform="translate(660.000 272) scale(0.020000 -0.020000)"/><path d="M355 0Q287 0 246.0 39.5Q205 79 205 145V468H47V550H205V705H295V550H520V468H295V145Q295 117 311.5 99.5Q328 82 355 82H515V0Z" fill="#F2EFDF" transform="translate(672.000 272) scale(0.020000 -0.020000)"/><path d="M300 -8Q201 -8 142.5 50.0Q84 108 84 212V338Q84 443 142.0 500.5Q200 558 300 558Q400 558 458.0 500.5Q516 443 516 338V212Q516 108 457.5 50.0Q399 -8 300 -8ZM300 72Q359 72 392.5 105.0Q426 138 426 202V348Q426 412 392.5 445.0Q359 478 300 478Q242 478 208.0 445.0Q174 412 174 348V202Q174 138 208.0 105.0Q242 72 300 72Z" fill="#F2EFDF" transform="translate(684.000 272) scale(0.020000 -0.020000)"/><path d="M92 -180V550H182V445H183Q190 499 230.0 529.5Q270 560 332 560Q415 560 464.0 505.5Q513 451 513 356V195Q513 100 464.0 45.0Q415 -10 332 -10Q270 -10 230.0 21.0Q190 52 183 105H180L182 -20V-180ZM302 68Q359 68 391.0 98.0Q423 128 423 195V355Q423 423 391.0 452.5Q359 482 302 482Q247 482 214.5 447.0Q182 412 182 350V200Q182 138 214.5 103.0Q247 68 302 68Z" fill="#F2EFDF" transform="translate(696.000 272) scale(0.020000 -0.020000)"/><path d="M300 -10Q203 -10 143.5 48.5Q84 107 84 210V340Q84 443 143.5 501.5Q203 560 300 560Q365 560 413.5 534.0Q462 508 489.0 461.0Q516 414 516 350V252H172V200Q172 139 207.0 103.5Q242 68 300 68Q350 68 382.5 87.5Q415 107 422 140H512Q503 71 445.0 30.5Q387 -10 300 -10ZM172 322H428V350Q428 415 394.5 450.5Q361 486 300 486Q239 486 205.5 450.5Q172 415 172 350Z" fill="#F2EFDF" transform="translate(708.000 272) scale(0.020000 -0.020000)"/><path d="M92 0V550H182V445H183Q190 500 228.0 530.0Q266 560 329 560Q412 560 461.0 509.0Q510 458 510 370V0H420V354Q420 417 388.5 450.5Q357 484 303 484Q247 484 214.5 449.0Q182 414 182 350V0Z" fill="#F2EFDF" transform="translate(720.000 272) scale(0.020000 -0.020000)"/><path d="M308 -10Q208 -10 148.0 46.0Q88 102 88 200V350Q88 448 148.0 504.0Q208 560 308 560Q403 560 461.5 509.0Q520 458 523 370H433Q430 423 397.0 451.5Q364 480 308 480Q249 480 213.5 446.5Q178 413 178 351V200Q178 138 213.5 104.0Q249 70 308 70Q364 70 397.0 99.0Q430 128 433 180H523Q520 92 461.5 41.0Q403 -10 308 -10Z" fill="#F2EFDF" transform="translate(732.000 272) scale(0.020000 -0.020000)"/><path d="M300 -8Q201 -8 142.5 50.0Q84 108 84 212V338Q84 443 142.0 500.5Q200 558 300 558Q400 558 458.0 500.5Q516 443 516 338V212Q516 108 457.5 50.0Q399 -8 300 -8ZM300 72Q359 72 392.5 105.0Q426 138 426 202V348Q426 412 392.5 445.0Q359 478 300 478Q242 478 208.0 445.0Q174 412 174 348V202Q174 138 208.0 105.0Q242 72 300 72Z" fill="#F2EFDF" transform="translate(744.000 272) scale(0.020000 -0.020000)"/><path d="M268 -10Q186 -10 136.5 45.0Q87 100 87 194V355Q87 450 136.0 505.0Q185 560 268 560Q330 560 370.5 529.0Q411 498 419 445H420L418 570V730H508V0H418V105H417Q410 51 370.0 20.5Q330 -10 268 -10ZM298 68Q354 68 386.0 103.0Q418 138 418 200V350Q418 412 386.0 447.0Q354 482 298 482Q241 482 209.0 452.5Q177 423 177 355V195Q177 128 209.0 98.0Q241 68 298 68Z" fill="#F2EFDF" transform="translate(756.000 272) scale(0.020000 -0.020000)"/><path d="M300 -10Q203 -10 143.5 48.5Q84 107 84 210V340Q84 443 143.5 501.5Q203 560 300 560Q365 560 413.5 534.0Q462 508 489.0 461.0Q516 414 516 350V252H172V200Q172 139 207.0 103.5Q242 68 300 68Q350 68 382.5 87.5Q415 107 422 140H512Q503 71 445.0 30.5Q387 -10 300 -10ZM172 322H428V350Q428 415 394.5 450.5Q361 486 300 486Q239 486 205.5 450.5Q172 415 172 350Z" fill="#F2EFDF" transform="translate(768.000 272) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟█████▀▘ ▄▄▄▄▄ ▗▖"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 296) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(132.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 296) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(216.000 296) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(228.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 296) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(456.000 296) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐█████▀ █████ ▐▛▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 320) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 320) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(192.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 320) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(456.000 320) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(468.000 320) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐███▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 344) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 344) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(168.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 344) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐█▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 368) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 368) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(144.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 368) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▝ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 392) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(120.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 392) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████▄▄▄▄▄▄▄▖ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(108.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(120.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(132.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(144.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(156.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(168.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(180.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(192.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 416) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐███████████▛ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(108.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(180.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 440) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐██████████▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(108.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 464) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(168.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 464) scale(0.020000 -0.020000)"/></g></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.6"><title>release: 1.0.6</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.6</text></g></svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
width="24"
|
|
4
|
+
height="24"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
fill="none"
|
|
7
|
+
stroke="#D7F75B"
|
|
8
|
+
stroke-width="2"
|
|
9
|
+
stroke-linecap="round"
|
|
10
|
+
stroke-linejoin="round"
|
|
11
|
+
>
|
|
12
|
+
<path d="M12 5v16" />
|
|
13
|
+
<path d="M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z" />
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<svg
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
width="24"
|
|
4
|
+
height="24"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
fill="none"
|
|
7
|
+
stroke="#D7F75B"
|
|
8
|
+
stroke-width="2"
|
|
9
|
+
stroke-linecap="round"
|
|
10
|
+
stroke-linejoin="round"
|
|
11
|
+
>
|
|
12
|
+
<path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" />
|
|
13
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
width="24"
|
|
4
|
+
height="24"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
fill="none"
|
|
7
|
+
stroke="#D7F75B"
|
|
8
|
+
stroke-width="2"
|
|
9
|
+
stroke-linecap="round"
|
|
10
|
+
stroke-linejoin="round"
|
|
11
|
+
>
|
|
12
|
+
<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" />
|
|
13
|
+
<path d="m9 12 2 2 4-4" />
|
|
14
|
+
</svg>
|
|
Binary file
|
package/docs/migration.md
CHANGED
|
@@ -15,7 +15,7 @@ This guide describes the supported migration shape for moving an OpenCode workfl
|
|
|
15
15
|
- Keep global LitOpenCode agent route configuration in `~/.config/opencode/litopencode.json`, or `$XDG_CONFIG_HOME/opencode/litopencode.json` when `XDG_CONFIG_HOME` is set.
|
|
16
16
|
- Keep LitOpenCode runtime config in `.litopencode/config.json` when project-local config is needed.
|
|
17
17
|
- Use `npm exec --package @litfamily/litopencode -- litopencode install` to delegate default setup to `opencode plugin <target> --global --force`; packaged installs use the current `@litfamily/litopencode` version, while local checkout installs use the package path.
|
|
18
|
-
- The installer creates `litopencode.json` only when it is missing. The config hook routes the lead categories and `lit-loop` to `openai/gpt-6-astra`/`xhigh`; execution/research helpers use `openai/gpt-
|
|
18
|
+
- The installer creates `litopencode.json` only when it is missing. The config hook routes the lead categories and `lit-loop` to `openai/gpt-6-astra`/`xhigh`; execution/research helpers use the fresh default `openai/gpt-6-luna`/`max`. Ordinary install/update preserves an already configured model; only an explicit model prompt changes managed routes.
|
|
19
19
|
- Interactive installs render a persistent five-stage TTY timeline with active spinner motion, stage-purpose text, an explicit stage-three write boundary, retained completion lines, and one restart/Tab receipt. CI, non-TTY, `NO_COLOR`, and `--dry-run` paths retain plain or machine-readable output.
|
|
20
20
|
- Use `litopencode doctor --root <workspace>` to inspect package metadata, config source, runtime paths, and ledger location without writing files.
|
|
21
21
|
- Packaged plugin startup and successful interactive `install`/`doctor` management commands run a bounded foreground automatic-update barrier by default. It installs only an exact newer stable `@litfamily/litopencode@<version>` into a private staging prefix, invokes the staged installer with `--no-auto-update`, and requires a matching post-install `doctor --json` result before the transaction succeeds. The separate `~/.litopencode/auto-update-install.lock`, journal, receipt, and private backup keep rollback evidence outside project/config roots; rollback is fingerprint-verified, and an unknown staged state or impossible rollback stops the host without a success claim while retaining the backup path. Use `--no-auto-update` or `LITOPENCODE_NO_AUTO_UPDATE=1` to disable it; `NO_UPDATE_NOTIFIER` and `LITOPENCODE_NO_UPDATE_CHECK` remain higher-precedence opt-outs.
|
|
@@ -23,7 +23,7 @@ This guide describes the supported migration shape for moving an OpenCode workfl
|
|
|
23
23
|
- Use `litopencode doctor --root <workspace>` to inspect `litopencode.json` route validity and effective `lit-plan` / `lit-loop` settings without writing files.
|
|
24
24
|
- Use `litopencode install --dry-run --root <workspace>` to preview the `opencode.json` plugin mutation without writing files.
|
|
25
25
|
- Route fields include top-level `permissionMode` (`safe`, `balanced`, or `yolo`) plus per-agent/per-category `provider`, `model`, `variant`, `category`, `reasoningEffort`, `textVerbosity`, `thinking`, `temperature`, `topP`, `maxTokens`, `promptAppend`, `tools`, `permission`, and `providerOptions`; generated route files use `variant` as the primary effort knob while `reasoningEffort` stays available for explicit provider-level overrides. LitOpenCode keeps `topP` as its config spelling and projects it to OpenCode's native `top_p` field; this preserves nonreasoning model sampling while Astra's native Responses capability omits unsupported sampling fields.
|
|
26
|
-
- Global route config loads first, project-local route config merges afterward, and effective per-agent fields override category fields. Fresh/reset lead routes use Astra with native `reasoningEffort
|
|
26
|
+
- Global route config loads first, project-local route config merges afterward, and effective per-agent fields override category fields. Fresh/reset lead routes use Astra with native `reasoningEffort`. GPT-6 Astra and Sol accept `low`, `medium`, `high`, `xhigh`, `max`, and `ultra`. GPT-6 Luna accepts `low`, `medium`, `high`, `xhigh`, and `max`, but not `ultra`. Previous-generation GPT-5.6 Luna accepts only `high` and `max`; `xhigh` remains unsupported for that model. Astra has no invented `-fast` alias. No-selection installs preserve user route bytes but fail before success output when a managed route is unsafe. Other model IDs remain user-owned custom routes. Existing host entries named `momus` or `litwork-reviewer` preserve explicit routes and receive Astra/xhigh only when route fields are absent. LitOpenCode does not expose Hermes-specific per-subagent overrides.
|
|
27
27
|
- Use `litopencode install --permission-prompt`, `--permission-mode balanced`, or `--yolo` only when you explicitly want LitOpenCode to reduce OpenCode approval prompts. Default installs do not relax permissions. Balanced mode allows routine automation while keeping dangerous bash patterns on ask; YOLO mode writes `permissionMode: "yolo"` and the plugin config hook allows OpenCode `bash`, `edit`, `webfetch`, and `external_directory` globally. In both balanced and YOLO modes, `task` delegation is granted only to execution-capable primary agents; subagents and `lit-plan` stay task-denied so delegation never recurses and the planner cannot select an implementation child. Existing global string/object and per-primary task policies are preserved unless they would weaken those hard deny guards; absent global task policy is not invented, and the runtime lineage guard blocks child task calls even under an explicit global allow. `lit-plan` remains agent-level edit/bash/task `deny`.
|
|
28
28
|
- Restart OpenCode after changing `permissionMode`; OpenCode loads config at startup and running sessions keep the already-loaded permission policy.
|
|
29
29
|
- Planning routes now produce proportionate objective-achievable checklists rather than relying on a later review pass to discover missing execution detail. Each retained item carries action/output/verification, while risky or multi-stage work receives SDD-like gates only when justified. `/review-work` accepts both draft plans (read-only `PASS`/`ITERATE`/`NEEDS-CONTEXT`) and completed work (the existing five-lane review); it never implements a draft plan.
|
package/docs/reference-Ko-KR.md
CHANGED
|
@@ -87,10 +87,21 @@ CI와 비대화형 터미널에서는 자동 질문을 생략하며, 명시한
|
|
|
87
87
|
`NO_COLOR`에서도 출력 스타일을 직접 선택할 수 있지만 색상·커서 이스케이프는 출력하지
|
|
88
88
|
않습니다. `TERM=dumb`이나 UTF-8이 아닌 로케일에서는 ANSI 장식 없이 `LIT` 문자를 표시합니다.
|
|
89
89
|
새로 설치하거나 초기화하면 계획·검토 및 `lit-loop`는 `openai/gpt-6-astra`/`xhigh`,
|
|
90
|
-
실행·연구 helper는
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
실행·연구 helper는 새 기본값인 `openai/gpt-6-luna`/`max`를 사용합니다. `gpt-6-sol`/`xhigh`는
|
|
91
|
+
코딩 리드 대안입니다. GPT-6 Astra와 GPT-6 Sol은 `low`, `medium`, `high`, `xhigh`, `max`, `ultra`를
|
|
92
|
+
모두 지원합니다. GPT-6 Luna는 `low`, `medium`, `high`, `xhigh`, `max`를 지원하지만 `ultra`는
|
|
93
|
+
지원하지 않습니다. 이전 세대 `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`는 계속 선택할 수 있고,
|
|
94
|
+
현재 호스트 카탈로그에는 이 모델들의 지원 종료일이 등록되어 있지 않습니다. GPT-5.6 Luna는
|
|
95
|
+
`high`와 `max`만 지원하고 `xhigh`는 허용하지 않습니다. 이 제한은 GPT-6 Luna에는 적용되지 않습니다.
|
|
96
|
+
일반 설치와
|
|
97
|
+
업데이트는 이미 설정된 모델을 보존합니다. 명시적인 `--model-prompt`만 관리 모델 키를 다시 씁니다.
|
|
98
|
+
기존 GPT-5.6 계열의 `-fast` 의미는 유지하지만 `gpt-6-astra-fast` 별칭은 추가하지 않습니다.
|
|
99
|
+
|
|
100
|
+
### 모델 카탈로그 갱신
|
|
101
|
+
|
|
102
|
+
OpenAI 모델 ID, 역할 기본값, 선택 메뉴 항목과 effort 범위는 `src/cli/model-catalog.ts`에 모여 있습니다.
|
|
103
|
+
이 파일을 수정한 뒤 `npm run build`로 패키지용 JavaScript를 다시 생성하고,
|
|
104
|
+
`node --test test/gpt6-astra-routing.test.mjs`로 선택 메뉴, 기본 경로와 라우팅 동작을 확인합니다.
|
|
94
105
|
전역 설치가 필요하면 다음을 사용합니다.
|
|
95
106
|
|
|
96
107
|
```sh
|
|
@@ -307,3 +318,31 @@ wrapper 이전에는 보관 사본이 필요하지 않습니다. 교체나 안
|
|
|
307
318
|
안내된 복구 경로를 보존하고 확인하세요. 설치 성공으로 간주하면 안 됩니다.
|
|
308
319
|
이 검사는 일반적인 사용과 감지한 경로 변경을 다루며, 적대적인 동시 파일 변경까지
|
|
309
320
|
막는다는 보장은 아닙니다.
|
|
321
|
+
|
|
322
|
+
## 심볼릭 링크된 native 스킬 루트와 다른 위치의 같은 이름 스킬
|
|
323
|
+
|
|
324
|
+
Install은 `<root>/skills`가 심볼릭 링크여도(예: `~/.config/opencode/skills`가 다른
|
|
325
|
+
디렉토리를 가리키는 경우) 의도적으로 그 링크를 따라가며, 이 경우에도 설치는
|
|
326
|
+
성공합니다. `install`과 `doctor` 모두 이제 이 링크를 보고하므로 조용히 다른 곳에
|
|
327
|
+
쓰는 일이 없습니다: 링크 경로, 실제로 해석된 대상 경로, 그리고 그 대상이 git
|
|
328
|
+
작업 트리 안에 있다면 저장소 루트까지 알려줍니다. 관리 대상 스킬 디렉토리가 그
|
|
329
|
+
저장소 안에 나타나기 때문입니다. 스킬 디렉토리가 개인 git 저장소를 가리키는
|
|
330
|
+
사용자라면 설치 후 그 저장소 안에 수십 개의 새 디렉토리가 생기는 것을 예상해야
|
|
331
|
+
합니다. 이 경고는 설치 실패가 아니라 링크를 다시 정리하라는 안내로 받아들이세요.
|
|
332
|
+
|
|
333
|
+
`doctor`는 이에 더해 `install.nativeSkills.shadowedSkills`를 보고합니다. 관리 대상
|
|
334
|
+
스킬 id마다, OpenCode가 함께 읽는 다른 스킬 루트에 같은 이름의 `<id>/SKILL.md`
|
|
335
|
+
사본이 있는지 확인합니다 — 사용자 수준의 `~/.agents/skills`, `~/.claude/skills`,
|
|
336
|
+
그리고 현재 작업 디렉토리 기준 프로젝트 수준의 `.opencode/skills`, `.claude/skills`,
|
|
337
|
+
`.agents/skills`가 대상입니다. OpenCode는 둘 중 어느 사본이든 불러올 수 있으며, 이
|
|
338
|
+
문서는 어느 쪽이 우선하는지 단정하지 않습니다. 해석한 경로가 관리 대상 native
|
|
339
|
+
스킬 루트와 같으면 같은 트리이므로 shadow로 표시하지 않고 제외합니다. Shadow
|
|
340
|
+
표시는 안내용이며 `nativeSkills.ok`나 doctor 전체의 `install.ok`를 바꾸지 않습니다.
|
|
341
|
+
보고된 shadow를 해결하려면 관리되지 않는 사본을 지우거나 이름을 바꾸세요. 그대로
|
|
342
|
+
두면 OpenCode가 LitOpenCode가 관리하는 사본 대신 그 사본을 불러올 수 있습니다.
|
|
343
|
+
|
|
344
|
+
## 디자인 제작과 README
|
|
345
|
+
|
|
346
|
+
OpenCode 네이티브 스킬 `frontend-ui-ux`는 충분한 구현 요청을 받으면 작업 화면을 만들고 렌더링을 확인합니다. 중요한 방향이 모호할 때만 질문하며 답변을 보존합니다. 검토·계획 요청은 읽기 전용입니다.
|
|
347
|
+
|
|
348
|
+
네이티브 스킬 도구에서 `readme-studio`를 선택하면 실제 저장소 정보로 README와 표지를 제작합니다. 로컬 글꼴의 윤곽선, Remotion/HyperFrames 예제, 정적·동적 출력 절차가 함께 설치됩니다. 이미지 생성 도구가 없으면 `IMAGE_GENERATION_UNAVAILABLE`을 알리고 제공된 배경으로 이어갑니다. 공개 GitHub/npm 렌더링 검증은 별도 단계입니다. 전용 슬래시 명령은 없습니다.
|