?????, ?? ???! ? ?? ???? ? ?? ????? Wails ?????? ?? ????? ???? ????? ???? ??????? ?? ? ??? ???????. Go ???? ?? ????? ?? ????? ??? ???? ??????.
?? ????? ??? ?????? ??????. ?? ????? ????? Wails? ???? Vanilla JS? ???? ??? ???? ? ?????? ???? GUI? ??? ? ????. ?? ????, Wails? ????? ?? Svelte? ? ?? ???? ???? ??? Svelte? ???? ? ????. Wails CLI(?? ??)? Svelte Typescript(wails init -n myproject -t svelte-ts)? ???? ???? ??? ???? Svelte3? ???? ????? ?????. ?? ???? Svelte5(? ? ??)? ????? ?? ??? ????? bash ????? ????(??? Wails CLI? ???? ??? ???). ??? ????? ???? ? ?? ??? Taildwindcss Daisyui? ???????.
?? ?? Vanilla Js? Vue? ?? ??? ?? React? ????, ??? ?? ???? HTMX(?? ???? ??)???. ??? Svelte? ???? ??? ??? ???, ???? ??? ?? Wails? ???????? ????? ????(?? ??? ?? ?????…). ??? ? ?????? ?? ?? ?????? ?? ?? ??? ?? ??? ????? ????? ??? ?!
???? ???????.
I - ????? ?? ????
? ?????? ??? ? ?? ??? Wails CLI? ????? ViteJ? ????? ??? ?? ? ? ?? ????.
... . ├── index.html ├── package.json ├── package.json.md5 ├── package-lock.json ├── postcss.config.js ├── README.md ├── src │?? ├── App.svelte │?? ├── assets │?? │?? ├── fonts │?? │?? │?? ├── nunito-v16-latin-regular.woff2 │?? │?? │?? └── OFL.txt │?? │?? └── images │?? │?? └── logo-universal.png │?? ├── lib │?? │?? ├── BackBtn.svelte │?? │?? ├── BottomActions.svelte │?? │?? ├── EditActions.svelte │?? │?? ├── EntriesList.svelte │?? │?? ├── Language.svelte │?? │?? ├── popups │?? │?? │?? ├── alert-icons.ts │?? │?? │?? └── popups.ts │?? │?? ├── ShowPasswordBtn.svelte │?? │?? └── TopActions.svelte │?? ├── locales │?? │?? ├── en.json │?? │?? └── es.json │?? ├── main.ts │?? ├── pages │?? │?? ├── About.svelte │?? │?? ├── AddPassword.svelte │?? │?? ├── Details.svelte │?? │?? ├── EditPassword.svelte │?? │?? ├── Home.svelte │?? │?? ├── Login.svelte │?? │?? └── Settings.svelte │?? ├── style.css │?? └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs ├── go │?? ├── main │?? │?? ├── App.d.ts │?? │?? └── App.js │?? └── models.ts └── runtime ├── package.json ├── runtime.d.ts └── runtime.js ...
Vite?? ??? ? ?????? ??? ? ?? ??? ?? ?? ??? ??? ?? ????. ???? ?? ???? ??? bash ????? ???? Svelte5(Taildwindcss Daisyui ?? ??)? ?????. ?? ????? ??? ???? ?? TypeScript? ????? ??? ??? ? ????.
??? ? ???? ??? ?? wailsjs ??? ?????. Wails? ??? ??? ??? ??? ?? ?? ?????. go ?? ???? ?????? ?????? ?? ??? ??? Js/Ts? "???" ???? ???? ????. ?? ??, main/App.js(?? ?? TypeScript ??? main/App.d.ts)?? ? ??? ???(??) ???? ?? ????.
... . ├── index.html ├── package.json ├── package.json.md5 ├── package-lock.json ├── postcss.config.js ├── README.md ├── src │?? ├── App.svelte │?? ├── assets │?? │?? ├── fonts │?? │?? │?? ├── nunito-v16-latin-regular.woff2 │?? │?? │?? └── OFL.txt │?? │?? └── images │?? │?? └── logo-universal.png │?? ├── lib │?? │?? ├── BackBtn.svelte │?? │?? ├── BottomActions.svelte │?? │?? ├── EditActions.svelte │?? │?? ├── EntriesList.svelte │?? │?? ├── Language.svelte │?? │?? ├── popups │?? │?? │?? ├── alert-icons.ts │?? │?? │?? └── popups.ts │?? │?? ├── ShowPasswordBtn.svelte │?? │?? └── TopActions.svelte │?? ├── locales │?? │?? ├── en.json │?? │?? └── es.json │?? ├── main.ts │?? ├── pages │?? │?? ├── About.svelte │?? │?? ├── AddPassword.svelte │?? │?? ├── Details.svelte │?? │?? ├── EditPassword.svelte │?? │?? ├── Home.svelte │?? │?? ├── Login.svelte │?? │?? └── Settings.svelte │?? ├── style.css │?? └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs ├── go │?? ├── main │?? │?? ├── App.d.ts │?? │?? └── App.js │?? └── models.ts └── runtime ├── package.json ├── runtime.d.ts └── runtime.js ...
?? ??? ?????. Promise? ?? ???? ???? ?? Go ??? "??"??? ?? ??? ?? ??? ??? ?? Go? ???? ???? ???? ??(? ?? TypeScript? ???? ??? typeds.ts)? ?? ????. ??????? ???? ? ???.
?? ??? ?? ???? ?? ????? ??? ????? ???? ?? ???? ??? ? ?? Go ??? ???? ?? ???? ???? ????.
src ???? ? ??????? ????? Vite?? ????? "frontend/dist"? ??(?? ?? ??? ??)? ??? ???? ????. Tailwindcss? ????? style.css?? ?? Tailwind ??? ???? ?? CSS ???? ???? ????. ?? ?????? ? ??? ??? ???? ?? ??? ??(?? ??/??)? ?? ????? ??? ? ????.
? ??? ????? ?? ?? ??(Wails dev)?? ???? ? ? ???? ???? ? ??? ???? ??? ??(???? ????? ????)? ??? ? ?? ?? ??? ?? ???? ? ???? ??? ? ??? ????? ?? http://localhost:34115? ?? ? ??????? ???????. ?? ?? ???? ???? ?? ??? ??? ? ????. Wails ??? ???? ?? ??? ?? ??? ????? ??? ???, ?????? ?(?? ?????)? ??? ??? ???? ???? "?? ??"? ????:
II - ??… HTML, CSS, JavaScript? ?? ??????
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH ? MODIWL // This file is automatically generated. DO NOT EDIT import {models} from '../models'; export function AddPasswordEntry(arg1:string,arg2:string,arg3:string):Promise<string>; export function CheckMasterPassword(arg1:string):Promise<boolean>; export function DeleteEntry(arg1:string):Promise<void>; export function Drop():Promise<void>; export function GetAllEntries():Promise<Array<models.PasswordEntry>>; export function GetEntryById(arg1:string):Promise<models.PasswordEntry>; export function GetLanguage():Promise<string>; export function GetMasterPassword():Promise<boolean>; export function GetPasswordCount():Promise<number>; export function SaveLanguage(arg1:string):Promise<void>; export function SaveMasterPassword(arg1:string):Promise<string>; export function UpdateEntry(arg1:models.PasswordEntry):Promise<boolean>;
????? Svelte? 4?? JavaScript ???? ??????(?? ??? Tailwindcss Daisyui ??).
- svelte-copy, ??? ??? ????? ????? ? ?? ??? ? ????.
- svelte-i18n, i18n ???, ? ???? ??????? ??? ??? ? ??? ?????.
- svelte-spa-router? Svelte? ?? ??? ??????, ?????? ??? ??? ? ?? ??? ? ????. ? ???? ???? ???? "??" ???? ??? ??? ?? ?????. SvelteKit.
- sweetalert2, ????? ??/?? ??? ?? ??? ??? ? ?????.
?? SPA? ???? main.js(?? main.ts) ????? ???? ???????.
... . ├── index.html ├── package.json ├── package.json.md5 ├── package-lock.json ├── postcss.config.js ├── README.md ├── src │?? ├── App.svelte │?? ├── assets │?? │?? ├── fonts │?? │?? │?? ├── nunito-v16-latin-regular.woff2 │?? │?? │?? └── OFL.txt │?? │?? └── images │?? │?? └── logo-universal.png │?? ├── lib │?? │?? ├── BackBtn.svelte │?? │?? ├── BottomActions.svelte │?? │?? ├── EditActions.svelte │?? │?? ├── EntriesList.svelte │?? │?? ├── Language.svelte │?? │?? ├── popups │?? │?? │?? ├── alert-icons.ts │?? │?? │?? └── popups.ts │?? │?? ├── ShowPasswordBtn.svelte │?? │?? └── TopActions.svelte │?? ├── locales │?? │?? ├── en.json │?? │?? └── es.json │?? ├── main.ts │?? ├── pages │?? │?? ├── About.svelte │?? │?? ├── AddPassword.svelte │?? │?? ├── Details.svelte │?? │?? ├── EditPassword.svelte │?? │?? ├── Home.svelte │?? │?? ├── Login.svelte │?? │?? └── Settings.svelte │?? ├── style.css │?? └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs ├── go │?? ├── main │?? │?? ├── App.d.ts │?? │?? └── App.js │?? └── models.ts └── runtime ├── package.json ├── runtime.d.ts └── runtime.js ...
Wails CLI? ??? ????? ??? ??? ??????. svelte-i18n ???????? fallback/initial ?? ??? ??? ??? ??? JSON ??? main.js/ts ??? ???? ???(?? ??? ??? ???? ?? ???? ??? ??? ?? ??? ????. ??? ??? JSON ??? ??? ??? ????.
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH ? MODIWL // This file is automatically generated. DO NOT EDIT import {models} from '../models'; export function AddPasswordEntry(arg1:string,arg2:string,arg3:string):Promise<string>; export function CheckMasterPassword(arg1:string):Promise<boolean>; export function DeleteEntry(arg1:string):Promise<void>; export function Drop():Promise<void>; export function GetAllEntries():Promise<Array<models.PasswordEntry>>; export function GetEntryById(arg1:string):Promise<models.PasswordEntry>; export function GetLanguage():Promise<string>; export function GetMasterPassword():Promise<boolean>; export function GetPasswordCount():Promise<number>; export function SaveLanguage(arg1:string):Promise<void>; export function SaveMasterPassword(arg1:string):Promise<string>; export function UpdateEntry(arg1:models.PasswordEntry):Promise<boolean>;
?? ? ?????? ???? Svelte ?????? ??? ???? ?? ? ?? ????? ?????(??? ??? ?? ???? ??? ? ??).
/* package.json */ ... }, "dependencies": { "svelte-copy": "^2.0.0", "svelte-i18n": "^4.0.1", "svelte-spa-router": "^4.0.1", "sweetalert2": "^11.14.5" } ...
JSON ??? ?? ??? ???? ? ??? ?? ?? ?? ???? ??? ?? ????. ??? ??? .svelte ??? $format?? ?? ? ???? ???? ??? ????. ?? ???? ??? ???? ????. ? ??? ???? ? ?? ??? ????. ?? ??? ? ??? ????? ???????. ??? ??? ?? ??? ???? ?? ??? ????? ???? ? ????.
?? Svelte ????????? ????? ????? ??? ?? ??? App.svelte ?????.
/* main.ts */ import { mount } from 'svelte' import './style.css' import App from './App.svelte' import { addMessages, init } from "svelte-i18n"; // ? ? import en from './locales/en.json'; // ? ? import es from './locales/es.json'; // ? ? addMessages('en', en); // ? ? addMessages('es', es); // ? ? init({ fallbackLocale: 'en', // ? ? initialLocale: 'en', // ? ? }); const app = mount(App, { target: document.getElementById('app')!, }) export default app
????? ??????? ???? ? ???? ???? ??? ?? ?? ???? ??? ???? GetMasterPassword? ?????(? ???? ? ?? ?? ??). ? ??? ??????? ????, ??? ????? ???? ?? ?? ???? ?? ??? ??? ????(?? ?? ???? ??? ???) ??? ????? ???? ? ??? ?? ????? ????? ?????. ???. ??????? ??? ????? ?? ?? ???? "??"? ???? ???? ??????? ???? ?? ??? ????? ????? ??? ????.
????? Login.svelte ?? ??? ???? ? ??? ??????? ??? ??? ?????. svelte-i18n ?????? ??? ?? ? ??? ?? ?? ??? ????? ????? Login.svelte? ???? ? ??????? (GetLanguage ???? ????) ??? ?? ??? ??? ????? ?????. ??????? ? ???? ???? ??, ? ??? ?? ???? ??? ??? ?? ?? svelte-i18n?initialLocale? ??? ?? ?????. ?? ??? ??? ?? ?? ??? ????(locale.set(result);) "change_titles" ???? ????, ?? ???? ??? ??? ?? ?? ?? ??? ?????. ???? ??? ??:
/* frontend/src/locales/en.json */ { "language": "Language", "app_title": "Nu-i uita ? minimalist password store", "select_directory": "Select the directory where to save the data export", "select_file": "Select the backup file to import", "master_password": "Master Password ?", "generate": "Generate", "insert": "Insert", "login": "Login", ... } /* frontend/src/locales/es.json */ { "language": "Idioma", "app_title": "Nu-i uita ? almacén de contrase?as minimalista", "select_directory": "Selecciona el directorio donde guardar los datos exportados", "select_file": "Selecciona el archivo de respaldo que deseas importar", "master_password": "Contrase?a Maestra ?", "generate": "Generar", "insert": "Insertar", "login": "Inciar sesión", ... }
??? ?? ??? ??? ????.
... . ├── index.html ├── package.json ├── package.json.md5 ├── package-lock.json ├── postcss.config.js ├── README.md ├── src │?? ├── App.svelte │?? ├── assets │?? │?? ├── fonts │?? │?? │?? ├── nunito-v16-latin-regular.woff2 │?? │?? │?? └── OFL.txt │?? │?? └── images │?? │?? └── logo-universal.png │?? ├── lib │?? │?? ├── BackBtn.svelte │?? │?? ├── BottomActions.svelte │?? │?? ├── EditActions.svelte │?? │?? ├── EntriesList.svelte │?? │?? ├── Language.svelte │?? │?? ├── popups │?? │?? │?? ├── alert-icons.ts │?? │?? │?? └── popups.ts │?? │?? ├── ShowPasswordBtn.svelte │?? │?? └── TopActions.svelte │?? ├── locales │?? │?? ├── en.json │?? │?? └── es.json │?? ├── main.ts │?? ├── pages │?? │?? ├── About.svelte │?? │?? ├── AddPassword.svelte │?? │?? ├── Details.svelte │?? │?? ├── EditPassword.svelte │?? │?? ├── Home.svelte │?? │?? ├── Login.svelte │?? │?? └── Settings.svelte │?? ├── style.css │?? └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs ├── go │?? ├── main │?? │?? ├── App.d.ts │?? │?? └── App.js │?? └── models.ts └── runtime ├── package.json ├── runtime.d.ts └── runtime.js ...
??? ???, ???? ???? ??? ???? ??? ???? ??? newPassword? ?? onLogin?? ???? 6? ???? ?? ASCII ???? ?????. ?, ? ?? ?? const isAscii = (str: string): boolean => ? ?? ??? 1???? ?????(? ??? ? ???? I??? ??). /^[x00-x7F] $/.test(str);. ??? ???? ??? ???? ????? ?? ???? ?????. ?? ??????? ??? ??? ????? ?? ??(isLogin = false) ??? ??? ???? SaveMasterPassword ??(Wails?? ??? ???)? ?? ?????. Promise? ????? ????(??????? ??? ???? Id? uuid ???? ??) ???? svelte-spa-router? ?? ? ?? ?????. ?????? ?? ??. ???, ????? ?ASCII ??? ?? ? ??? ?? ??? ???? DB? ??? ????? ?? ??(isLogin = true) CheckMasterPassword ??? ??? ????? ?? ????? ??? ????? ?? ? ??? ?????. ???? ? ??? ?????(Promise? true? ???) ??? ????? ???? ??? ???? ???? ?????.
??????? ?? ??? ??? ?? ??? ?? ? ????. ?? HTML? ??? ?? ??? ?? ?? ?? ???(TopActions ?? ??), ?? ?? ???(BottomActions ?? ??) ? ??? ???? ??? ? ? ?? ?? ??? ??? ???? ???? ?? ??? 3?? ?? ??? ??????. ??? ??? ?(EntriesList ?? ??):
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH ? MODIWL // This file is automatically generated. DO NOT EDIT import {models} from '../models'; export function AddPasswordEntry(arg1:string,arg2:string,arg3:string):Promise<string>; export function CheckMasterPassword(arg1:string):Promise<boolean>; export function DeleteEntry(arg1:string):Promise<void>; export function Drop():Promise<void>; export function GetAllEntries():Promise<Array<models.PasswordEntry>>; export function GetEntryById(arg1:string):Promise<models.PasswordEntry>; export function GetLanguage():Promise<string>; export function GetMasterPassword():Promise<boolean>; export function GetPasswordCount():Promise<number>; export function SaveLanguage(arg1:string):Promise<void>; export function SaveMasterPassword(arg1:string):Promise<string>; export function UpdateEntry(arg1:models.PasswordEntry):Promise<boolean>;
?, ?? ??(searchTerms)? ? ???? ??? ???? ??? ????? ?? ??? ?????. ??? ?? ?? ??? ??? ????? ?? ? ??? showList ??(TopActions? props isEntriesList)? ?????.
? ??????? ? ? ??? ? ?? ?? ??? ?? ??? searchTerms ??? ??? props? ?????. TopActions ?? ??? ???? ??? ???? ?? ?? ?? ?? Home? ??? ????, Home? ?? ?? ?? ?? EntriesList? props
? ?????.?? ??? ????? ???? ??? ???? ???? ??? ???? ?? ??? ???? EntriesList ?? ??? ?? ?????.
... . ├── index.html ├── package.json ├── package.json.md5 ├── package-lock.json ├── postcss.config.js ├── README.md ├── src │?? ├── App.svelte │?? ├── assets │?? │?? ├── fonts │?? │?? │?? ├── nunito-v16-latin-regular.woff2 │?? │?? │?? └── OFL.txt │?? │?? └── images │?? │?? └── logo-universal.png │?? ├── lib │?? │?? ├── BackBtn.svelte │?? │?? ├── BottomActions.svelte │?? │?? ├── EditActions.svelte │?? │?? ├── EntriesList.svelte │?? │?? ├── Language.svelte │?? │?? ├── popups │?? │?? │?? ├── alert-icons.ts │?? │?? │?? └── popups.ts │?? │?? ├── ShowPasswordBtn.svelte │?? │?? └── TopActions.svelte │?? ├── locales │?? │?? ├── en.json │?? │?? └── es.json │?? ├── main.ts │?? ├── pages │?? │?? ├── About.svelte │?? │?? ├── AddPassword.svelte │?? │?? ├── Details.svelte │?? │?? ├── EditPassword.svelte │?? │?? ├── Home.svelte │?? │?? ├── Login.svelte │?? │?? └── Settings.svelte │?? ├── style.css │?? └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs ├── go │?? ├── main │?? │?? ├── App.d.ts │?? │?? └── App.js │?? └── models.ts └── runtime ├── package.json ├── runtime.d.ts └── runtime.js ...
?? ???? 2?? props(listCounter ? search)? ???? ??? ?????(?? ??: models.PasswordEntry[] = $state([]);). ???? ??? ?? ????? ????? ???? ??? ???? ??? ?? ??? ?????. ???? ??? ?? ??? ?????. ?? ?? ??? ??? ?? ??? ???? ???? ?? ??? ?????.
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH ? MODIWL // This file is automatically generated. DO NOT EDIT import {models} from '../models'; export function AddPasswordEntry(arg1:string,arg2:string,arg3:string):Promise<string>; export function CheckMasterPassword(arg1:string):Promise<boolean>; export function DeleteEntry(arg1:string):Promise<void>; export function Drop():Promise<void>; export function GetAllEntries():Promise<Array<models.PasswordEntry>>; export function GetEntryById(arg1:string):Promise<models.PasswordEntry>; export function GetLanguage():Promise<string>; export function GetMasterPassword():Promise<boolean>; export function GetPasswordCount():Promise<number>; export function SaveLanguage(arg1:string):Promise<void>; export function SaveMasterPassword(arg1:string):Promise<string>; export function UpdateEntry(arg1:models.PasswordEntry):Promise<boolean>;
??? ???? ???? 2?? ??? ??? ? ????. ? ??? ?? ??? ??? ? ???? ??? ?? ??? ???? ????. onclick={() => ??(`/details/${entry.Id}`)}. ????? ??? ?????? ?? ???? ???? ???? ???? ??? ????? ?? ??? ???? Id ????? ?????.
???? ??? ? ?? ? ?? ??? ???? ??? ???? ????. ?? ??? ???? showAlert ??? ???? ?? ??? ?????. ? ??? ??? sweetalert2 ?????? ?? ??? ??? showWarning? ?????(sweetalert2 ?????? ???? ?? ??? frontend/src/lib/popups/popups.ts? ??). ???? ?? ??? ???? DeleteEntry ???? ????(DB?? ??), ??? ??? ???? deleteItem? ?????(?? ??? ??? ???? ??). :
/* package.json */ ... }, "dependencies": { "svelte-copy": "^2.0.0", "svelte-i18n": "^4.0.1", "svelte-spa-router": "^4.0.1", "sweetalert2": "^11.14.5" } ...
? ??? ?? ?? ??(BottomActions)? ?? ?????. props? ?? ??? ???? ??? ??(??, ?? ?? AddPassword)? ?????? ??? ?????.
AddPassword ? EditPassword ??? ?? ??? ??? ???? ??? ???? ?????. ? ? ???? ??? ??? ??? ??? ??? ? ??? ??? ???? ?? ???? ??? ?? ??? ?? 6 ASCII ???? ??? ??? ??? ??? ??? ????. ????? ??? ???? ?? ???? ?? ??? ??? Wails ?? ??? ????? ????.
/* main.ts */ import { mount } from 'svelte' import './style.css' import App from './App.svelte' import { addMessages, init } from "svelte-i18n"; // ? ? import en from './locales/en.json'; // ? ? import es from './locales/es.json'; // ? ? addMessages('en', en); // ? ? addMessages('es', es); // ? ? init({ fallbackLocale: 'en', // ? ? initialLocale: 'en', // ? ? }); const app = mount(App, { target: document.getElementById('app')!, }) export default app
?? ??? ? ?? ??? ?????. ???? ?? ?? ??(??)?? props ?? ??? ?? ?? ?? ??? ????.
/* frontend/src/locales/en.json */ { "language": "Language", "app_title": "Nu-i uita ? minimalist password store", "select_directory": "Select the directory where to save the data export", "select_file": "Select the backup file to import", "master_password": "Master Password ?", "generate": "Generate", "insert": "Insert", "login": "Login", ... } /* frontend/src/locales/es.json */ { "language": "Idioma", "app_title": "Nu-i uita ? almacén de contrase?as minimalista", "select_directory": "Selecciona el directorio donde guardar los datos exportados", "select_file": "Selecciona el archivo de respaldo que deseas importar", "master_password": "Contrase?a Maestra ?", "generate": "Generar", "insert": "Insertar", "login": "Inciar sesión", ... }
? ????? HTML? ???? ?? ??? ???? ?? select???. onchange ?????? ?? 3?? ??? ???? ??(handleChange)? ????.
- svelte-i18n ?????? ???? ??????? ??? ?????
- Wails ???? ?????? ?? ???? ??? ???? ???? ?? ? ?? ?? ?? ??? ??? ????? ???("change_titles")? ?????. ?? ????
- ???? ??? ??? DB? ???? ??? ??????? ??? ? ?? ??? ??? ?? ???? ???.
?? ??? ???? ?? ??? ???? ???? ??? ???? ?? ?????. ?? ??? ?? ?? ?????. ???? ? ??? ???? ?? ???? ????? ????? ???? ??????? ????(onclick={() => EventsEmit("quit")}). ?? ?? ??? ?? ?? Esc ?(???)? ??? ??? ???? ????? ?????.
??? ??? ?? ?? ???? ??? ?????.
... . ├── index.html ├── package.json ├── package.json.md5 ├── package-lock.json ├── postcss.config.js ├── README.md ├── src │?? ├── App.svelte │?? ├── assets │?? │?? ├── fonts │?? │?? │?? ├── nunito-v16-latin-regular.woff2 │?? │?? │?? └── OFL.txt │?? │?? └── images │?? │?? └── logo-universal.png │?? ├── lib │?? │?? ├── BackBtn.svelte │?? │?? ├── BottomActions.svelte │?? │?? ├── EditActions.svelte │?? │?? ├── EntriesList.svelte │?? │?? ├── Language.svelte │?? │?? ├── popups │?? │?? │?? ├── alert-icons.ts │?? │?? │?? └── popups.ts │?? │?? ├── ShowPasswordBtn.svelte │?? │?? └── TopActions.svelte │?? ├── locales │?? │?? ├── en.json │?? │?? └── es.json │?? ├── main.ts │?? ├── pages │?? │?? ├── About.svelte │?? │?? ├── AddPassword.svelte │?? │?? ├── Details.svelte │?? │?? ├── EditPassword.svelte │?? │?? ├── Home.svelte │?? │?? ├── Login.svelte │?? │?? └── Settings.svelte │?? ├── style.css │?? └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs ├── go │?? ├── main │?? │?? ├── App.d.ts │?? │?? └── App.js │?? └── models.ts └── runtime ├── package.json ├── runtime.d.ts └── runtime.js ...
???? ??? ???? DB? ?? ???? ???? Drop ???? ????, ??? ??? ???? ???? ??? ??? ??? ??? ?????. ??? ??? ???? ?????.
?? ??? ? ??? ?? ????? ??? ????? ???????.
???? ?? ??? ???? ????? ???? ???? ?????(onclick={() => EventsEmit("import_data")}). ???? ???? ?? ??? ??? ? ??? ?? ?? ?? ?? ??? ????. ???? ??? ???? ??(fileLocation)? ??? ??? ? ???? ???? ??? ?? ?? ??????? ???? ???("enter_password")?? ???? ????? ??? ?????. ????? ??? ? ??? ??? ????? ?? ? ?? ?. ???? ?????? ???? ??? ??? ????? ???? ? ?? ???("password")? ?????. ? ??? ???? ????? ???? ???? ??? ?? ???? DB? ???? ?? ???? ??? ???? Db ???? ImportDump ???? ?????. ????? ?? ??(?? ?? ??)? ??? ???? ???? ? ???("imported_data")? ?????. ?????? ???? ???? ?? ? ?? ??? ???? ???.
- ??? ???? ?? ??? ??? ??? ???? ?? ??? ???? ??? ?????
- ?? ???? ????? ??? ? ?? ?? ??? ??? ?????.
? ?? ?? ?? ???? ??? ?? ???? ?? ?? ?? ????. ?:
... . ├── index.html ├── package.json ├── package.json.md5 ├── package-lock.json ├── postcss.config.js ├── README.md ├── src │?? ├── App.svelte │?? ├── assets │?? │?? ├── fonts │?? │?? │?? ├── nunito-v16-latin-regular.woff2 │?? │?? │?? └── OFL.txt │?? │?? └── images │?? │?? └── logo-universal.png │?? ├── lib │?? │?? ├── BackBtn.svelte │?? │?? ├── BottomActions.svelte │?? │?? ├── EditActions.svelte │?? │?? ├── EntriesList.svelte │?? │?? ├── Language.svelte │?? │?? ├── popups │?? │?? │?? ├── alert-icons.ts │?? │?? │?? └── popups.ts │?? │?? ├── ShowPasswordBtn.svelte │?? │?? └── TopActions.svelte │?? ├── locales │?? │?? ├── en.json │?? │?? └── es.json │?? ├── main.ts │?? ├── pages │?? │?? ├── About.svelte │?? │?? ├── AddPassword.svelte │?? │?? ├── Details.svelte │?? │?? ├── EditPassword.svelte │?? │?? ├── Home.svelte │?? │?? ├── Login.svelte │?? │?? └── Settings.svelte │?? ├── style.css │?? └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs ├── go │?? ├── main │?? │?? ├── App.d.ts │?? │?? └── App.js │?? └── models.ts └── runtime ├── package.json ├── runtime.d.ts └── runtime.js ...
?????(EventsOn)? ???? ???? Wails ??? ??? ?? ? ?? ???? ???? ??? ????? ?? ??? ??? ????. ?? ??? ???? ?? ???? ???? ?? ?????. React? ????? onMount ??? ???? ?? ??? ????? ?? ?? ???? "??"? ? ????. ? ?? ??? ???? ?? ??? ?? EventsOn?? ??? ?? ??? ?????. ??:
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH ? MODIWL // This file is automatically generated. DO NOT EDIT import {models} from '../models'; export function AddPasswordEntry(arg1:string,arg2:string,arg3:string):Promise<string>; export function CheckMasterPassword(arg1:string):Promise<boolean>; export function DeleteEntry(arg1:string):Promise<void>; export function Drop():Promise<void>; export function GetAllEntries():Promise<Array<models.PasswordEntry>>; export function GetEntryById(arg1:string):Promise<models.PasswordEntry>; export function GetLanguage():Promise<string>; export function GetMasterPassword():Promise<boolean>; export function GetPasswordCount():Promise<number>; export function SaveLanguage(arg1:string):Promise<void>; export function SaveMasterPassword(arg1:string):Promise<string>; export function UpdateEntry(arg1:models.PasswordEntry):Promise<boolean>;
??????? ????? ??? ?? ??? ???? About ?? ??? ?? ???? ?? ?????. ?? about?? ???? ??? ??????? ?? ??? ???? ??? ????? ??? ?? ????. ??? ??? ? ? ??? ???? ?????? ???? ?? ??? ?????. ??? ?? ? ?????? ?? ??()? ???? ?? ??? ???? ??? ???? ????????? Wails? ???? ?? ?? ?? ??(BrowserOpenURL)? ?? ?? ?? ???? ?? ?? ???? ????. :
/* package.json */ ... }, "dependencies": { "svelte-copy": "^2.0.0", "svelte-i18n": "^4.0.1", "svelte-spa-router": "^4.0.1", "sweetalert2": "^11.14.5" } ...
??? ?? ????? build/bin ??? ?????. ??? ?? ?? ??? ????? ??? ???? ????? Wails CLI ??? ???? ?? ????.
? ??????? ???? ? ???? ? ?? ???? ?? ??? ? ????. Windows ? Linux? ????? ??? ?????. ??? ??(???? ?? ???)? ???? ???? ?? ? ?? ?? ????? ?? "??"?? Makefile? ??????.
make create-bundles ??? Linux ??? ??????? ?? .tar.xz ?? ??? ?? ??? ???? '?? ????' ??? ?? Makefile, ?? ?? ? ?? ?????? ???. Windows ??? ?? ????? dist/?? ?? ??? .zip?? ?????. ??? ??? ??? ??? ??? ???? ?? Wails?? ??? ????? ???(?? ??)? ? ?? Github Actions? ????. ???? ?????.
make create-bundles ??? ??? ? ???? Wails ?? wails build -clean -upx(Linux? ??) ?? wails build -skipbindings -s -platform windows/amd64 -? ?????. upx(Windows? ??). -upx ???? ???? ???? ?? UPX ????? ???? ????? ???? ?? ?????. ?? ?? ??? ?? ?? ? ??? ? ????? ???? ??? ?? ?? ?????.
?????, ?? ????? ???? ?? ??? ??? ?? ??? ???? ?? ?? ?? ?? ???(DEV_VERSION)?? ?????.
?! 2?? ???? ???? ?????! ??? ???? ? ?? ?????? ???, ????? ??? ????? ?? ???? ? ??? ??? ????. ?????? ??? ?? ?? ??…
? GitHub ????? ?? ?????? ??? ?? ? ??? ?? ?????.
?? ?????? ?????. ??? ?? ?????!
? ??? ???? ???? ??? ???? ?: Golang? Wails ????? ??(2?)? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??











GO? ????? ????? ??? ????? ??????. ?? ??? ?? ?????. 1. ? ??? ?? : Linux ????? ?? ??? ?????? ??? ??? ? ????. 2. ?? ??? ??? ?? ???? ???? ?? ??? ????? ?? ??? ?? ?? ??? ?? ??? ? ? ????. 3. ?? ?? ???? ?? : ?? ????? ??? ??? ?? ??? ??? ???? ??????. 4. ??? ?? ??? : ??? ???? ????? ?? ?????? ? ???? ? ? ??? ??? ? ??? ?????. ??? ??? CLI ??, ???? ??? ? ?? ????? ????? ????? ????? ?? ??? ??? ???? ????? ???? ??? ?????.

GO?? ?? ??? ???? MAKE ??? ?? ?? ?? ? ??????. ?? ??? ???? ??? ??? ???? ?? ? ???? ?? ? ?? ??? ???? ?? ? ???? ??? ??? ? ????. ?? ??, ch : = make (Chanint, 10)? ?? 10 ?? ?? ?? ??? ??? ?? ??? ????. ???? ?? ??? ??, ??? ???? ?? ???? ??? ???? ???? ?? ? ??? ??? ????? ?????. ??? ??? ?, ?? : 1. ?? ??? ??? ??? ?? ??? ??? ??? ?? ?????????. 2. ??? ??? ??? ??? ??? ???? ?? ???????. 3. ??? chanstruct {} ??? ?? ?? ? ? ????. ???? ?????? ??? ?, ??? ??? ?? ? ???? ?????.

goensuresmemorysafety? ?? MemolemanucameThrougatomaticgargarbagecollection, nopointerarithmetic, safeconcurrency, andruntimechecks.first, go'sgarbagecollectoricallyally reclaimsunusedmemory, ??, itdisallowspointe, itdisallowspointe ??

GO? ??? ?????? ??????. C? ?? ??? ? ??? ??? ?? ??? ?? ??? ? ??? ???? ?? ?????. 1. ?? ? ???? ?? ???? Go? OS ???? ?? ? ????? ????? ??? ??, ??, ?? ??? ? ???? ?? ?????. OS.ReadFile? ???? ? ?? ??? ?? ??? ?????. ?? ???? ?? ?? ?? ??? ???? ? ?????. 2. ???? ?? ???? OS/EXEC ???? exec.command ??? ?? ??? ????, ??? ????, ?? ??? ????, ?? ? ?? ??? ?????? ?? ??, ??? ?? ? ?? ????? ??? ???? ????? ?? ? ? ????. 3. ???? ? ??? ???? Net ???? TCP/UDP ?????, DNS ?? ? ?? ??? ?????.

GO ???? ?? ??? ????? ?? ???? ????? ?? ? ???? ???? ??? ??? ???? ????????. ?? ???? ??? ?, ???? ? ??? ?? ??? ???? ?? ?? ? ? ????. 1. func (rrectangle) area () int? ?? ? ???? ???? rect.area ()? ?? ?? ??????. 2. ??? ?? ???? ?? func (r*???) setwidth (...)? ?? ??? ???? ???? ???? ?? ??? ???? ?????. 3. ??? ?? ? ?, ?? ??? ??? ?? ? ???, ?? ??? ?? ?? ?? ? ???. 4. Go? Getter/Setter? ??? ???? ??????.

GO?? ?????? ??? ???? ?? ??? ???? ?????. ?????? ??? ???? ???? ??? ??? ???? ?? ??? ?????? ???? ??????. ?? ??, speak () ???? ?? ? ??? ?????? ???? ???? ???? ?? ??? ???? ?? ? ? ????. ?????? ???? ??, ?? ?? ?? ?? ? ????? ?? ????? ???? ? ?????. ?????? ???? ????? ???? ???? ??? ??? ???? ??? ?? ??? ???? ?? ?????? ?????. ???? ?? ???? ??, ??, ?? ?????? ?? ???? ??? ? ?? ???? ?????. ?? ??, ?? ?? ??? ?? ??? ??? ???? ??? Anno? ??? ? ????.

Go Language?? ??? ??? ?? ??? ??? ? ?? ??? ?? ?????. 1.Strings.contains ()? ???? ?? ???? ???? ??? ??? ???? ?? ?? ???? ? ?????. 2.strings.index ()? ???? ?? ???? ???? ??? ?? ? ??? ???? ??? -1? ?????. 3.strings.replaceall ()? ?? ???? ?? ??? ?? ? ? ??? Strings.replace ()? ?? ?? ?? ?? ? ? ????. 4.Len () ??? ???? ??? ??? ?? ? ????? ?? ??? ?? ? ?? ??? ???? ?????? ???????. ??? ??? ?? ??? ???, ??? ?? ?? ? ??? ??? ?? ?????? ?????.

TheGoiopackageprovidesinterfaceslikeReaderandWritertohandleI/Ooperationsuniformlyacrosssources.1.io.Reader'sReadmethodenablesreadingfromvarioussourcessuchasfilesorHTTPresponses.2.io.Writer'sWritemethodfacilitateswritingtodestinationslikestandardoutpu
