5 Commits
Author SHA1 Message Date
raucao 2fff2d7e09 Merge pull request 'Fix GFM markdown rendering in production' (#265) from bugfix/kramdown into master
CI / Test (push) Successful in 45s
Reviewed-on: #265
2026-11-04 13:37:53 +00:00
raucao b62d5a6035 Fix GFM markdown rendering in production
CI / Test (pull_request) Successful in 48s
Release Drafter / Update release notes draft (pull_request) Successful in 5s
kramdown-parser-gfm was only pulled in transitively by solargraph, which
lives in the development group. Production installs therefore lacked the
GFM parser, so rendering any rich-text content page raised
"Kramdown::Error: kramdown has no parser to handle the specified input
format: GFM".

Declare kramdown-parser-gfm as a direct dependency and add a regression
spec for ApplicationHelper#markdown_to_html.

Fixes #264
2026-11-04 17:36:19 +04:00
raucao 455bf93c81 Link dashboard Storage card to connected apps when present
CI / Test (push) Successful in 44s
Users with stored remoteStorage authorizations now jump straight to the connected apps dashboard from the services dashboard, instead of the storage info page.
2026-11-04 16:08:22 +04:00
raucao 939f447eae Merge pull request 'Upgrade Liquor Cabinet and enable hashed access tokens' (#263) from dev/upgrade_liquor-cabinet into master
CI / Test (push) Successful in 44s
Reviewed-on: #263
2026-11-04 11:40:13 +00:00
raucao 7b1f33abd0 Upgrade Liquor Cabinet and enable hashed access tokens
CI / Test (pull_request) Successful in 45s
Release Drafter / Update release notes draft (pull_request) Successful in 3s
Liquor Cabinet 2.0.0-rc.2 can look up remoteStorage authorizations by the SHA256 digest of the presented bearer token, which matches how Akkounts now stores them. Set RS_HASHED_ACCESS_TOKENS=true in the dev Compose setup so the two sides agree; Liquor Cabinet still falls back to the plaintext key for authorizations created before hashing.
2026-11-04 15:35:45 +04:00
7 changed files with 46 additions and 2 deletions

No files matched your search

+1
View File
@@ -43,6 +43,7 @@ gem 'flipper-ui'
gem 'gpgme', '~> 2.0.24'
gem 'zbase32', '~> 0.1.1'
gem 'kramdown'
gem 'kramdown-parser-gfm'
gem 'device_detector'
# HTTP requests
+1
View File
@@ -561,6 +561,7 @@ DEPENDENCIES
importmap-rails
jbuilder (~> 2.15)
kramdown
kramdown-parser-gfm
letter_opener
letter_opener_web
listen (~> 3.2)
+6
View File
@@ -3,5 +3,11 @@ class DashboardController < ApplicationController
def index
@current_section = :services
@storage_path =
if Setting.remotestorage_enabled? && current_user.remote_storage_authorizations.exists?
apps_services_storage_path
else
services_storage_path
end
end
end
+1 -1
View File
@@ -47,7 +47,7 @@
<div class="border border-gray-300 rounded-md hover:border-gray-400
bg-[length:80%] bg-[center_top_-156px] bg-no-repeat
bg-[url(/img/logos/icon_remotestorage.svg)]">
<%= link_to services_storage_path,
<%= link_to @storage_path,
class: "block h-full px-6 py-6 rounded-md btn-text-dark" do %>
<h3 class="mb-3.5">Storage</h3>
<p class="text-gray-600">
+2 -1
View File
@@ -97,7 +97,7 @@ services:
GARAGE_DEFAULT_BUCKET: remotestorage
liquor-cabinet:
image: gitea.kosmos.org/5apps/liquor-cabinet:2.0.0-rc.1
image: gitea.kosmos.org/5apps/liquor-cabinet:2.0.0-rc.2
networks:
- external_network
- internal_network
@@ -108,6 +108,7 @@ services:
command: ["bundle", "exec", "rainbows", "-c", "/etc/liquor-cabinet/rainbows.conf.rb", "--listen", "0.0.0.0:4567"]
environment:
RACK_ENV: staging
RS_HASHED_ACCESS_TOKENS: "true"
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_DB: 1
+26
View File
@@ -11,4 +11,30 @@ RSpec.describe 'Account dashboard', type: :feature do
visit root_path
expect(page).to have_content('Services')
end
context 'with connected remoteStorage apps' do
before do
allow_any_instance_of(AppCatalog::WebApp).to receive(:update_metadata).and_return(true)
allow_any_instance_of(RemoteStorageAuthorization).to receive(:remove_token_expiry_job).and_return(nil)
user.remote_storage_authorizations.create!(
permissions: ["documents:rw"],
client_id: "app.example.com",
redirect_uri: "https://app.example.com",
expire_at: 1.month.from_now
)
end
scenario 'links the Storage card to the connected apps dashboard' do
visit root_path
expect(page).to have_link('Storage', href: apps_services_storage_path)
end
end
context 'without connected remoteStorage apps' do
scenario 'links the Storage card to the storage info page' do
visit root_path
expect(page).to have_link('Storage', href: services_storage_path)
end
end
end
+9
View File
@@ -1,4 +1,13 @@
require 'rails_helper'
describe ApplicationHelper do
describe "#markdown_to_html" do
it "renders GFM input" do
expect(helper.markdown_to_html("**bold**")).to include("<strong>bold</strong>")
end
it "renders GFM-specific syntax" do
expect(helper.markdown_to_html("~~struck~~")).to include("<del>struck</del>")
end
end
end