Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0a596aed0 | ||
|
|
a468f0ecfa | ||
|
|
5ef5518795 | ||
|
|
92c5569538 | ||
|
|
132e4faed2 |
12
CHANGELOG.md
12
CHANGELOG.md
@@ -1,5 +1,17 @@
|
||||
# Changelog
|
||||
|
||||
## [1.11.1](https://github.com/thomiceli/opengist/compare/v1.11.0...v1.11.1) - 2025-09-30
|
||||
See here how to [update](https://opengist.io/docs/update) Opengist.
|
||||
|
||||
### Added
|
||||
- More translation strings (#511)
|
||||
|
||||
### Fixed
|
||||
- CSV errors for rendering (#514)
|
||||
|
||||
### Other
|
||||
- Reset default log level to warn
|
||||
|
||||
## [1.11.0](https://github.com/thomiceli/opengist/compare/v1.10.0...v1.11.0) - 2025-09-21
|
||||
See here how to [update](https://opengist.io/docs/update) Opengist.
|
||||
|
||||
|
||||
@@ -77,9 +77,9 @@ Download the archive for your system from the release page [here](https://github
|
||||
|
||||
```shell
|
||||
# example for linux amd64
|
||||
wget https://github.com/thomiceli/opengist/releases/download/v1.11.0/opengist1.11.0-linux-amd64.tar.gz
|
||||
wget https://github.com/thomiceli/opengist/releases/download/v1.11.1/opengist1.11.1-linux-amd64.tar.gz
|
||||
|
||||
tar xzvf opengist1.11.0-linux-amd64.tar.gz
|
||||
tar xzvf opengist1.11.1-linux-amd64.tar.gz
|
||||
cd opengist
|
||||
chmod +x opengist
|
||||
./opengist # with or without `--config config.yml`
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# https://github.com/thomiceli/opengist/blob/master/docs/configuration/cheat-sheet.md
|
||||
|
||||
# Set the log level to one of the following: debug, info, warn, error, fatal. Default: warn
|
||||
log-level: debug
|
||||
log-level: warn
|
||||
|
||||
# Set the log output to one or more of the following: `stdout`, `file`. Default: stdout,file
|
||||
log-output: stdout,file
|
||||
|
||||
@@ -4,9 +4,9 @@ Download the archive for your system from the release page [here](https://github
|
||||
|
||||
```shell
|
||||
# example for linux amd64
|
||||
wget https://github.com/thomiceli/opengist/releases/download/v1.11.0/opengist1.11.0-linux-amd64.tar.gz
|
||||
wget https://github.com/thomiceli/opengist/releases/download/v1.11.1/opengist1.11.1-linux-amd64.tar.gz
|
||||
|
||||
tar xzvf opengist1.11.0-linux-amd64.tar.gz
|
||||
tar xzvf opengist1.11.1-linux-amd64.tar.gz
|
||||
cd opengist
|
||||
chmod +x opengist
|
||||
./opengist # with or without `--config config.yml`
|
||||
|
||||
@@ -10,7 +10,7 @@ Requirements:
|
||||
git clone https://github.com/thomiceli/opengist
|
||||
cd opengist
|
||||
|
||||
git checkout v1.11.0 # optional, to checkout the latest release
|
||||
git checkout v1.11.1 # optional, to checkout the latest release
|
||||
|
||||
make
|
||||
./opengist
|
||||
|
||||
@@ -27,9 +27,9 @@ Stop the running instance; then like your first installation of Opengist, downlo
|
||||
|
||||
```shell
|
||||
# example for linux amd64
|
||||
wget https://github.com/thomiceli/opengist/releases/download/v1.11.0/opengist1.11.0-linux-amd64.tar.gz
|
||||
wget https://github.com/thomiceli/opengist/releases/download/v1.11.1/opengist1.11.1-linux-amd64.tar.gz
|
||||
|
||||
tar xzvf opengist1.11.0-linux-amd64.tar.gz
|
||||
tar xzvf opengist1.11.1-linux-amd64.tar.gz
|
||||
cd opengist
|
||||
chmod +x opengist
|
||||
./opengist # with or without `--config config.yml`
|
||||
|
||||
@@ -2,8 +2,8 @@ apiVersion: v2
|
||||
name: opengist
|
||||
description: Opengist Helm chart for Kubernetes
|
||||
type: application
|
||||
version: 0.3.0
|
||||
appVersion: 1.11.0
|
||||
version: 0.4.0
|
||||
appVersion: 1.11.1
|
||||
home: https://opengist.io
|
||||
icon: https://raw.githubusercontent.com/thomiceli/opengist/master/public/opengist.svg
|
||||
sources:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Opengist Helm Chart
|
||||
|
||||
 
|
||||
 
|
||||
|
||||
Opengist Helm chart for Kubernetes.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ configExistingSecret: ""
|
||||
image:
|
||||
repository: ghcr.io/thomiceli/opengist
|
||||
pullPolicy: Always
|
||||
tag: "1.10.0"
|
||||
tag: "1.11.1"
|
||||
digest: ""
|
||||
imagePullSecrets: []
|
||||
# - name: "image-pull-secret"
|
||||
|
||||
@@ -431,7 +431,7 @@ func (gist *Gist) Files(revision string, truncate bool) ([]*git.File, error) {
|
||||
HumanSize: humanize.IBytes(fileCat.Size),
|
||||
Content: fileCat.Content,
|
||||
Truncated: fileCat.Truncated,
|
||||
MimeType: git.DetectMimeType([]byte(shortContent)),
|
||||
MimeType: git.DetectMimeType([]byte(shortContent), filepath.Ext(fileCat.Name)),
|
||||
})
|
||||
}
|
||||
return files, err
|
||||
@@ -465,7 +465,7 @@ func (gist *Gist) File(revision string, filename string, truncate bool) (*git.Fi
|
||||
HumanSize: humanize.IBytes(size),
|
||||
Content: content,
|
||||
Truncated: truncated,
|
||||
MimeType: git.DetectMimeType([]byte(shortContent)),
|
||||
MimeType: git.DetectMimeType([]byte(shortContent), filepath.Ext(filename)),
|
||||
}, err
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
type MimeType struct {
|
||||
ContentType string
|
||||
extension string
|
||||
}
|
||||
|
||||
func (mt MimeType) IsText() bool {
|
||||
@@ -16,7 +17,8 @@ func (mt MimeType) IsText() bool {
|
||||
}
|
||||
|
||||
func (mt MimeType) IsCSV() bool {
|
||||
return strings.Contains(mt.ContentType, "text/csv")
|
||||
return strings.Contains(mt.ContentType, "text/csv") &&
|
||||
(strings.HasSuffix(mt.extension, ".csv"))
|
||||
}
|
||||
|
||||
func (mt MimeType) IsImage() bool {
|
||||
@@ -84,6 +86,6 @@ func (mt MimeType) RenderType() string {
|
||||
return "Binary"
|
||||
}
|
||||
|
||||
func DetectMimeType(data []byte) MimeType {
|
||||
return MimeType{mimetype.Detect(data).String()}
|
||||
func DetectMimeType(data []byte, extension string) MimeType {
|
||||
return MimeType{mimetype.Detect(data).String(), extension}
|
||||
}
|
||||
|
||||
@@ -266,3 +266,67 @@ validation.invalid: Geçersiz %s
|
||||
|
||||
html.title.admin-panel: Yönetici paneli
|
||||
settings.ssh-key-exists: SSH anahtarı zaten mevcut
|
||||
gist.search.help.topic: Verilen konuyla ilgili gist'ler
|
||||
gist.search.placeholder.unlisted: Listelenmemiş
|
||||
settings.header.style: Stil
|
||||
auth.mfa.passkey: Parola Anahtarı
|
||||
auth.mfa.waiting-for-passkey-input: Tarayıcı etkileşiminden gelecek girdi bekleniyor...
|
||||
settings.header.account: Hesap
|
||||
settings.style.no-soft-wrap: Yumuşak Satır Kaydırma Yok
|
||||
auth.totp: Zamana Dayalı Tek Kullanımlık Parola (TOTP)
|
||||
flash.admin.sync-gist-languages: Gist dilleri senkronize ediliyor...
|
||||
auth.mfa.passkeys-help: Hesabınıza giriş yapmak ve çok faktörlü kimlik doğrulama yöntemi olarak kullanmak için bir geçiş anahtarı ekleyin.
|
||||
validation.invalid-gist-topics: Geçersiz gist konuları, harf veya rakamla başlamalı, 50 karakterden uzun olmamalı ve tire içerebilir.
|
||||
auth.totp.enter-recovery-key: veya cihazınızı kaybettiyseniz kurtarma anahtarını kullanın
|
||||
auth.totp.save-recovery-codes: Kurtarma kodlarınızı güvenli bir yerde saklayın. Bu kodları, kimlik doğrulayıcı uygulamanıza erişimi kaybetmeniz durumunda hesabınıza yeniden erişmek için kullanabilirsiniz.
|
||||
error.not-in-mfa-session: Kullanıcı çok faktörlü kimlik doğrulama oturumunda değil
|
||||
admin.invitations.delete_confirm: Bu daveti silmek istiyor musunuz?
|
||||
auth.totp.help: TOTP, paylaşılan bir gizli anahtarı kullanarak tek kullanımlık bir parola üreten, iki faktörlü kimlik doğrulama yöntemidir.
|
||||
auth.totp.use: TOTP kullan
|
||||
auth.totp.regenerate-recovery-codes: Kurtarma kodlarını yeniden oluştur
|
||||
auth.totp.already-enabled: TOTP zaten etkinleştirilmiş
|
||||
auth.totp.invalid-secret: Geçersiz TOTP gizli anahtarı
|
||||
auth.totp.invalid-code: Geçersiz TOTP kodu
|
||||
auth.totp.code-used: '%s kurtarma kodu kullanıldı, artık geçersiz. Şu anda çok faktörlü kimlik doğrulamayı devre dışı bırakmak veya kodlarınızı yeniden oluşturmak isteyebilirsiniz.'
|
||||
flash.auth.passkey-registred: '%s geçiş anahtarı kaydedildi'
|
||||
gist.new.topics: Konular (boşluklarla ayır)
|
||||
gist.list.topic-results-topic: Tüm %s konusuyla eşleşen gist'ler
|
||||
gist.list.topic-results: Konuyla eşleşen tüm gist'ler
|
||||
gist.search.placeholder.title: Başlık
|
||||
gist.search.placeholder.visibility: Görünürlük
|
||||
gist.search.placeholder.public: Halka açık
|
||||
gist.search.placeholder.private: Özel
|
||||
gist.search.placeholder.language: Lisan
|
||||
gist.search.placeholder.all: Tümü
|
||||
gist.search.placeholder.topics: Başlıklar
|
||||
gist.search.placeholder.search: Ara
|
||||
gist.delete.confirm: Bu Gist'i silmek istediğinizden emin misiniz?
|
||||
flash.auth.passkey-deleted: Geçiş anahtarı silindi
|
||||
settings.header.mfa: ÇFKD
|
||||
settings.header.ssh: SSH
|
||||
settings.style.gist-code: Gist kodu
|
||||
settings.style.soft-wrap: Yumuşak Satır Kaydırma
|
||||
settings.style.removed-lines-color: Silinen satırların rengi
|
||||
settings.style.added-lines-color: Eklenen satırların rengi
|
||||
settings.style.git-lines-color: Git satırların rengi
|
||||
settings.style.save-style: Stili kaydet
|
||||
auth.mfa: Çok Faktörlü Kimlik Doğrulama
|
||||
auth.mfa.passkeys: Parola Anahtarları
|
||||
auth.mfa.use-passkey: Parola Anahtarı kullan
|
||||
auth.mfa.bind-passkey: Parola Anahtarı bağla
|
||||
auth.mfa.login-with-passkey: Parola Anahtarı ile Giriş yap
|
||||
auth.mfa.use-passkey-to-finish: Kimlik doğrulamayı tamamlamak için bir geçiş anahtarı kullanın
|
||||
auth.mfa.passkey-name: İsim
|
||||
auth.mfa.delete-passkey: Sil
|
||||
auth.mfa.passkey-added-at: Eklendi
|
||||
auth.mfa.passkey-never-used: Hiç kullanılmadı
|
||||
auth.mfa.passkey-last-used: Son kullanım
|
||||
auth.mfa.delete-passkey-confirm: Geçiş Anahtarının silinmesini onaylayın
|
||||
auth.totp.disabled: TOTP başarıyla devre dışı bırakıldı
|
||||
auth.totp.disable: TOTP devre dışı bırak
|
||||
auth.totp.enter-code: Kimlik Doğrulayıcı uygulamasındaki kodu girin
|
||||
auth.totp.code: Kod
|
||||
auth.totp.submit: Kaydet
|
||||
auth.totp.proceed: Onayla
|
||||
auth.totp.scan-qr-code: İki faktörlü kimlik doğrulamayı etkinleştirmek için aşağıdaki QR kodunu kimlik doğrulayıcı uygulamanızla tarayın veya aşağıdaki metni girin, ardından oluşturulan kodla onaylayın.
|
||||
admin.actions.sync-gist-languages: Tüm gist dillerini senkronize et
|
||||
|
||||
@@ -15,8 +15,8 @@ type CSVFile struct {
|
||||
Rows [][]string `json:"-"`
|
||||
}
|
||||
|
||||
func (r CSVFile) getFile() *git.File {
|
||||
return r.File
|
||||
func (r CSVFile) InternalType() string {
|
||||
return "CSVFile"
|
||||
}
|
||||
|
||||
func renderCsvFile(file *git.File) (*CSVFile, error) {
|
||||
|
||||
@@ -21,8 +21,8 @@ type HighlightedFile struct {
|
||||
HTML string `json:"-"`
|
||||
}
|
||||
|
||||
func (r HighlightedFile) getFile() *git.File {
|
||||
return r.File
|
||||
func (r HighlightedFile) InternalType() string {
|
||||
return "HighlightedFile"
|
||||
}
|
||||
|
||||
type RenderedGist struct {
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
)
|
||||
|
||||
type RenderedFile interface {
|
||||
getFile() *git.File
|
||||
InternalType() string
|
||||
}
|
||||
|
||||
type NonHighlightedFile struct {
|
||||
@@ -17,8 +17,8 @@ type NonHighlightedFile struct {
|
||||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
func (r NonHighlightedFile) getFile() *git.File {
|
||||
return r.File
|
||||
func (r NonHighlightedFile) InternalType() string {
|
||||
return "NonHighlightedFile"
|
||||
}
|
||||
|
||||
func RenderFiles(files []*git.File) []RenderedFile {
|
||||
@@ -54,7 +54,11 @@ func processFile(file *git.File) RenderedFile {
|
||||
if mt.IsCSV() {
|
||||
rendered, err := renderCsvFile(file)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Error parsing CSV file for " + file.Filename)
|
||||
rendered, err := highlightFile(file)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Error rendering gist preview for " + file.Filename)
|
||||
}
|
||||
return rendered
|
||||
}
|
||||
return rendered
|
||||
} else if mt.IsText() && filepath.Ext(file.Filename) == ".md" {
|
||||
|
||||
2
templates/pages/gist.html
vendored
2
templates/pages/gist.html
vendored
@@ -55,7 +55,7 @@
|
||||
</div>
|
||||
<div class="overflow-auto">
|
||||
{{ if $file.MimeType.IsText }}
|
||||
{{ if $file.MimeType.IsCSV }}
|
||||
{{ if eq $file.InternalType "CSVFile" }}
|
||||
<table class="csv-table">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
2
templates/pages/gist_embed.html
vendored
2
templates/pages/gist_embed.html
vendored
@@ -17,7 +17,7 @@
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ if $file.MimeType.IsText }}
|
||||
{{ if $file.MimeType.IsCSV }}
|
||||
{{ if eq $file.InternalType "CSVFile" }}
|
||||
<table class="csv-table">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
Reference in New Issue
Block a user