Schedule posts to Bluesky with Cloudflare workers. skyscheduler.work
cf tool bsky-tool cloudflare bluesky schedule bsky service social-media cloudflare-workers

fix render on mobile

improve layout

+29 -10
+9 -2
assets/css/dashboard.css
··· 138 138 } 139 139 140 140 /** MAKING/EDITING POSTS **/ 141 - textarea, .pico textarea { 142 - resize: none; 141 + textarea { 142 + resize: none !important; 143 + } 144 + 145 + /* Fix floating label due to tab list shenanigans */ 146 + @media (max-width: 45em) { 147 + #post-content-label { 148 + width: unset !important; 149 + } 143 150 } 144 151 145 152 .uploadGuidelines, .editAltBlock {
+12
assets/css/stylesheet.css
··· 21 21 } 22 22 } 23 23 24 + /* Shrink the nav icon on small handhead screens */ 25 + @media (max-width: 410px) { 26 + .navHeader { 27 + img { 28 + width: 24px !important; 29 + height: 24px !important; 30 + margin-right: 10px; 31 + margin-top: 0.7em; 32 + } 33 + } 34 + } 35 + 24 36 .btn-error, .pico .btn-error { 25 37 border: var(--pico-border-width) solid red; 26 38 color: red;
+1 -1
assets/js/appHelper.js
··· 1 1 /* Functions that are mostly used on the application side of things */ 2 2 function getPostListElement(itemID) { 3 - return document.getElementById(`postBase${itemID}`); 3 + return document.getElementById(`post-${itemID}`); 4 4 } 5 5 6 6 function formatDate(date) {
+3 -3
src/layout/post.tsx
··· 23 23 24 24 export function PostHTML(props: ScheduledPostOptions) { 25 25 const content: Post = props.post; 26 - const oobSwapStr = (props.dynamic) ? `hx-swap-oob="#postBase${content.postid}"` : ""; 26 + const oobSwapStr = (props.dynamic) ? `hx-swap-oob="#post-${content.postid}"` : ""; 27 27 const hasBeenPosted: boolean = (content.posted === true && content.uri !== undefined); 28 28 29 29 const postHTML = html` 30 30 <article 31 - id="postBase${content.postid}" ${oobSwapStr}> 31 + id="post-${content.postid}" ${oobSwapStr}> 32 32 ${<PostDataHeader content={content} posted={hasBeenPosted} />} 33 - <div id="post${content.postid}"> 33 + <div id="content-${content.postid}"> 34 34 ${<PostContent text={content.text} posted={content.posted || false} repost={content.isRepost || false} />} 35 35 </div> 36 36 ${<PostDataFooter content={content} posted={hasBeenPosted} />}
+3 -3
src/layout/posts/buttons.tsx
··· 1 - 1 + // Buttons for post header tags 2 2 export function AddPostToThreadButton() { 3 3 return ( 4 4 <button class="addThreadPost btn-sm primary outline" data-tooltip="Add a post to thread" ··· 19 19 hx-trigger="click once" 20 20 title="Click to edit post content" 21 21 hx-get={`/post/edit/${id}`} 22 - hx-target={`#post${id}`} 22 + hx-target={`#content-${id}`} 23 23 hx-swap={`innerHTML show:#editPost${id}:top"`}> 24 24 <img src="/icons/edit.svg" alt="edit icon" width="20px" height="20px" /> 25 25 </button> ··· 32 32 } 33 33 34 34 export function DeletePostButton(props: DeletePostProps) { 35 - const deleteTargetId = `#postBase${props.id}`; 35 + const deleteTargetId = `#post-${props.id}`; 36 36 const postType = props.isRepost ? "repost" : "post"; 37 37 const deleteTarget = props.child ? `blockquote:has(${deleteTargetId})` : deleteTargetId; 38 38 return (
+1 -1
src/utils/appScripts.ts
··· 1 1 // Change this value to break out of any caching that might be happening 2 2 // for the runtime scripts (ex: main.js & postHelper.js) 3 - export const CURRENT_SCRIPT_VERSION: string = "1.5.5"; 3 + export const CURRENT_SCRIPT_VERSION: string = "1.5.6"; 4 4 5 5 export const getAppScriptStr = (scriptName: string) => `/js/${scriptName}.min.js?v=${CURRENT_SCRIPT_VERSION}`; 6 6